/*
 * Copyright 2022 Haulmont.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/* jmix-lumo/src/mixins/index.css */
/* jmix-lumo/src/mixins/picker-field-actions.css */
@media lumo_mixins_picker-field-actions {

    [part="action-part"] ::slotted(*) {
        display: flex;
        gap: var(--lumo-space-xs);
        margin-left: var(--lumo-space-xs);
    }

    :host([readonly]) [part="action-part"] {
        display: none;
    }

    :host([has-actions]) [part="input-field"] {
        padding-right: var(--lumo-space-xs);
    }
}

/* jmix-lumo/src/utilities/index.css */
/* shared/utility.css */
/* shared/src/utilities/misc.css */
.buttons-panel {
    width: 100%;
    flex-wrap: wrap;
}

.overflow-auto {
    overflow: auto;
}

/* jmix-lumo/src/utilities/misc.css */
.bordered-panel {
    border: 1px solid;
    border-color: var(--lumo-contrast-20pct);
    border-radius: var(--lumo-border-radius-l);
}

.footer-panel {
    background-color: var(--lumo-contrast-5pct);
    padding: var(--lumo-space-s) var(--lumo-space-m);
}

vaadin-button.link-button,
vaadin-button.dialog-close-button,
vaadin-button.dialog-header-button {
    font-size: inherit;
    line-height: inherit;

    padding: 0px;
    margin: 0px;

    min-width: 0px;
    height: auto;

    --vaadin-button-background: transparent;
}

vaadin-button.link-button::part(label),
vaadin-button.dialog-close-button::part(label),
vaadin-button.dialog-header-button::part(label) {
    line-height: inherit;
    overflow: visible;
    padding: 0px;
}

vaadin-button.link-button {
    border: none;
}

vaadin-button.dialog-close-button,
vaadin-button.dialog-header-button {
    color: var(--lumo-contrast);
}

/* jmix-lumo/src/icons/index.css */
/* shared/icons.css */
/* shared/src/icons/lumo-icons/lumo-icons.css */
/**
 * @license
 * Copyright (c) 2017 - 2026 Vaadin Ltd.
 * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
 */
@font-face {
  font-family: 'lumo-icons';
  src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABNcAAsAAAAAJqAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAARAAAAGBAJEuVY21hcAAAAYgAAAESAAAEAryc8p5nbHlmAAACnAAADUMAABssFN+RZGhlYWQAAA/gAAAAMQAAADZa/6SoaGhlYQAAEBQAAAAdAAAAJAbpA4RobXR4AAAQNAAAABAAAADEu4AAAGxvY2EAABBEAAAAZAAAAGSgQKfEbWF4cAAAEKgAAAAfAAAAIAFQAXBuYW1lAAAQyAAAATEAAAIuUUJZCHBvc3QAABH8AAABXQAAAimEGAW4eJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGG+wjiBgZWBgamKaQ8DA0MPhGZ8wGDIyAQUZWBlZsAKAtJcUxgcXjG+MmAO+p/FEMUcxDANKMyIoogJAIMlDDt4nO3T13GDQBhF4YOEcs4550wpKskF+cll0YS8l+syzMy3Z9gBoZkfgAKQD+5BDNEPETq+w26U7eepZvsxX9k1sfbT5PMJa6Q1nMfZmgvXxuEXi5QoUwn31ajToEmLNh269OgzYMiIMROmzJizYMmKNRu27Nhz4MiJMxeu3MLzHzx5kYQHFPk/6lpy77+zRDOwbCo5Q82bppvGpjmlBdPk06Khlgy1bKgVQ62a3oi0Zqh1079LG4baNNSWobYNtWOoXUPtGWrfUAeGOjTUkaGODXViqFNDnRnq3FAXhro01JWhrg11Y6hbQ90Z6t5QD4Z6NNSToZ4N9WKoV0O9Gerd9BWnD0N9GurLUBMj+QW9hHPRAAB4nLVYCWxc5RF+83t33759x3p333t72LvrPbzrI16TPWM7WcdekziHnUQxIQGaA1Iol5KS0iitjKqkSYGGFFHRCoE4VClpS9qkSVsBaUQRodxVSyUgVVoh2hQBEeJI1SrCj87/v71xDoSaWLP/OW/++Wfmm/k5C4f/WkbJg5zE+bkEl+E4TzafiaR11RaLRBPe+o6rvpOs7xzQW8lkq663zhxp1Ve7JHhKcrkkYxGltfbq+lVkh6Kqbap6RGY/xj6z+6ri8bR7PFSsi8mmnVe23Hlla5XgGBPncqm1vv1FJPt/6Gy/iwqDIqEwrvr2/i+mM2Cy+eEU14qdhAJ6GPT0MBQhBU6ANqXTT5SzclQ+pxB/p3IKXpZIe1x+SxRPy/F2Ir1c4UFuJt+nPDp1BRL9kMhSHiHkQdZJpK1TekuSTkudbbhjrxI3eUrI04c8q3KQ4yYPSBSZHKoTFJRjGOAHTTzIsNLpqzLxxxmT8lmIlclhS0F+GPLpMEqhQP8sZ3mjjmk7kV+qyfE6Wch5kUchHwKbE2zRfhSjCGHA20nrGglMi2GNSMfEoOOYRLSwOK136K9sdRBvWNzvcOwXw17i2AqTTl13Vni+Z/IEb7OCzAuG7VvE+u3iFpig1wjzmr91h9ahN/FE66CWkmzUW4F83TjKeEw08YZ5eod2h8nXERRNvtWz38h4uhRAx3DxjXpMkgDg96eb9sKHlS81KYGytLF7uYUc5JxcmOvnhrkV3Ab0gUxaD4Jq68XvLIBs3hu1YVcfgnQeu4kYnddc5nzOxea9Lhubx24i5v38PHZr84du0YJBjZI8Lwh8D+9w8CfqxhwAjllG6Rguh/VB7V06jKQk8AfoxAFegHuD2sxLdJzkteCogzckOgNnecfmkGpspTNwrxoq4cxRNjPBUyW0MB34UAdBrofLoW3FXNkiZGI5alFBiKVDoLlwLIHHsWktDfEho1W0BFuW9S1PgT/qh9TyvmW5xFQi9wiq/VOqfMPSqv9r2iMXZc8hIDjf4/L5XD19E32GASSRzyeMk2iRYV0vdEget9yBImlMrgLKFcO4VOJWc9dx27hd3A+5n3BHuWe5v3D/4D6BFvBADDJQgtVwHdpGBqVGPaPc5TukYtI7HILyjMY33a65/Pz9//f6QrO1XaTfvN/6Bb/3ReVp7sP2c5LQLUhL6R3OvELpUjZwX48gyXZKds/S+vhLzNZas5HarKFeIpsLMyQ7VUGSBNXvMu3U5Wf9Y+yU5yXTX2r63KwrZ910EU6Xzr2MSyrpNbEtalMpxhYgn01EeYCiGNbFO0UMoiVR7xCNk/BVUQ/jiAijdMp4s4pLH8ARTma4hPEtUmZEtNd4xWHMdyj8a3LXied5tyy7+efl8p5xso7uQdwx42IU8UyFq6rLYAHdDifM7TUMfJCsZft4mxle0xRYyL6L7vsA8df8nhkWshQ8GmWE/9aEpFs47rN3MD/aydmphjyaN8N7C5lchAc+U/AWzn1zc+jK0kczi3MQu2F65EyO7LTfvmjtw9M5428fPnAmx1Xj6yjDmDg3t/x9xO1EkkVYrSWaTCQT2UK+kE97dZzkbbwtmS5CNgVRBdQQkMAVVO8bJEAwT1w9sXxOX9+c5RO/rTSuHt8xPr7jXkrgxivozWwQXScoxM980rCQNcbKS5GUz1iWL8llUToUppDkMQ+IoRxJ3otZhoZi4bkRwDMopbeQRNi1RlOAMIHgoCrQMrKqVZ4zNN4d9Ux50tr4cL/cOjXVKvcPLe+OOnHIPz40x2ddZRztX9Xfv2o9JXCnO+1fMjTXb71ihUvuHb5cS+tT/rR/lK1c5ZLmDI12R/27y8uRVO7xOdLPtTFJ2d2j2mheUdYqNYpsAY7vE70d0j33SB1ecV9dG9Z/bshsV/VwHHOMPuR+ngzLY6JiDVhoLzJ73nWKIppz5jCDNmKBJbPmYa0zn9KruqZK8mZegnZ+K9qdiwsgAs6hyIxfpekUSmE2EJgrI566qRTUrUnr8FI829mZjdfTPzf1kZJUgHXeC+BAJ8TZbzwOe6rDUJ2Oxyt38T68OXt+vkCi+vgj5mGvUX1IT8KLDvB2OI4LwjMs03u86hsl8gtO5DxcmvoGNf4U5ObmC56CmYUm+ZiZP2HegflXwYUGh8rHRSxPIY8VX1UWE1uLpnyUFaMBEDP3ld5m2c6kFlwWHYgaR5DgHxmY967TB7h0sRPcQxLxxuTBK5cFNeMIXf7klPGJuRAmkdTXbQc5lYug745ghLuot7LskC9nf1gnmdmkXsbPRB7OXtCDMz2CKNqtUatdlKSoXQLZzqjrgp4MJyX7Savdbj1pl4wTsj1CQ3zELlfOcD/GWh+XxzxqefkM1Eoqp0AnttFzdOr0SOkCmygkkux/lGdzvN7g8sk0BQmbqsPZ0sSihcWJieLCRRN7ak3j1o7UgpHSztLIglSHw2ZzNHbhqq5SMllaSUlXsKdnsKdnc5uvu2vNwjVd3b62uuY78Uiv1+fz9kbiDkFwNPTuKnNAsoyyGOzhrOXz/pRr5wa4UW4ZdyXFJT3TeKxC5cyxaFUVmbSXT8Sq56W6wPCCnoQGhyrLUXNLewWgAYcH6l6wd76uj9QdURLTQ0vY+Utzz1RbhSFv4yrp1COA5+bvZpQ3niIrhYBbmDmMdNv8lrrD2vlMcmqYKWJjpeFsXGHvfoTnUZvfZRSMjcjMHUBmDk+gVuP8GGv8EMaRQW4xN95c55sYitEuRYZpXLXWZtHPGp4BctaG3rRbJodlt1ueWSm7uxx+x7QgTDt8brDfcIMAAbcM2+mscZfsgfqO8UL9RrJd9ngCbvcO3CwEhGk7uPwCMgjMwRUBuvN35gL5GB3A33LsoHatYd2SwtgR0zJom7yqkF7AJnNJK94Zpv4x0zVZC8vPSC5CHpyeTk32Q+CyYnR6euy2sbHbZk6kJlPl9hidTf0cJo0jZO2K1IpUdPiywIrStju3lc5hz2zhr2WqHuPXld9RLvC609A54HORcZZGP0Hp7G2Scvt8MZ/vaZcfqyv/0y7WK+duIuzB2MkB9UQaHzH7Amur19sKf2d0t7fDi3/VWvd+8huO5zq4MW4Vt567GSXNxfhcIaPxZcxAtM9osRzGXureWP55chnT1bVYEdgSXisDTzKj6uyTl3jcu0lvX99Niflxjy+4dHdBlWWv0p3SJFn2Kd0Qn9/pUdxa18IE9Dr9Tqd8HG/SoqiqMvMppbO3ifV77Ynw4e8EIkGfEtTaSCyUdbvckiKC8UZY8oiSGAi36U6dtBDd5QuFAw5JVkX4t/nwdKbhp/5NgPoLrYgLqKvLm27Umg8RJ3svoXlcttBpTlJcSoFW6zSdv9FZyANlN6HGTt1m5p/MQai1o4e4mzqzOEvFS/xuO/Wa8bKvHDKnf1nxFIbVn71PPiZHuG6W2bDAptvoY0yY4nYIMBVmQzxNeegjUD9Fqq4eOSq2kEG73cnLolUNLux2BCXeGbUPCoLTYsmm1kfT3876lDays1MkcotlszMiWPg2ZXTdWJ/DylvtgvM6XE6Iq9Ubz+48ONn/FZSnEqMPIurHuHmo30nUcIS9NDSguzVSg35aIkCBZmKMaEmePp7xsbwHt1ShiTdRKZ3/Exk30XzmCfZLbpp5Qg2FVDKOdObZA4JfXHJQCEobtvxMaBOXb7m25e1QrpgLh5GEiuHeUKg3TB6PDEaNjdHBCP7Co/hLs4WNLLl4VAsaygGhxdb7omixl66ZfF608L1bRFgYNpkgCWthyqgub6X1h7VSt3itWLf8ynjd0a6q7Q7o8cDoIatoh2/ZReshqaPybiiS21m+G6MHG0LX02kexLyyF3LMNeHVF6i7v4CuXm0w328crr2reuAUap7rLBLMTjDpQhWjVnOFfAINIAU0XqIh0FQAouLg1GXdS4NrrYLtGcljBUG2jnZ/bXD09lUusAQ6FduZvsVdoba1Flmworn+nhfAUkr0Fq4t2tWgy179pkr+yjLrXLYKNzQjMkMzhmuzHGLgW0uy4KwgWXYLwm6LJAxuGhjY9I1NA5haI0iNlB4qjSS6urBBbtzIC5a9Qpuw1yLwOwfpooFNg/TpaRLXJKuLq7FaIfFKrIYKmGPdi8mQKRarDRs6LRZBMDZQlIbH0NkE4TRtn2bNHtpEQtqwi4sQfXHRc9g5TdunhRPY7KHNHqFWcyWwrqR5JdeJH6K2bItVzVhT+YYK8Ee7JF9U3jWykqETRaHMmkxmzfVr0uk1/9klxXwg70ohKDHsWnlLeeb6NZmy7tvK950iaEU8q4Ax7cklE9TtaVoTopGA6p384cvfdwVr9pbrF1pZYu7sMQsSRJDPNS4RQe4Lx+PFeDzc8PPQJeGEHJsXw79zDT+kMCsMVGrBX6OF9Ne9OCuQIvVPzucrBtlDNK96ZIvNfswRKpeEGxrLQTLEXqadMLnVZrE5VQ9fLQyNp1kxSO2XVYSFqs34WI6hUsSvS8YrRgNnWagbo8R4asWeh/esgPXlPhLj1MDGefM2DvwP/nc56AB4nGNgZGBgAOKLzh/vxPPbfGXgZn4BFGGoUd3QiKD/P2eeynQLyOVgYAKJAgBqTwyBAAAAeJxjYGRgYA76nwUkXzAAAfNUBkYGVGAIAFb8A3UAAAB4nGNgYGBgfjG0MQC0VCwRAAAAAABOAJoA6AEKASwBTgFwAZoBxAHuAhoCnALoBJoEvATWBPIFDgUqBUwFnAXyBiAGZga4BtoHKgeMCAQIjAj4CT4JeAmQCiQKjgrWC04LaguUC84MFAxWDIwMxg0mDXANlnicY2BkYGAwZExhEGUAASYg5gJCBob/YD4DABk2AcIAeJxtkT1OwzAYht/0D9FKCARiYfECC2r6M3ZkaPcO3dPUaVM5ceS4Fb0DJ+AQHIKBM3AIDsFb80mVUG3J3+PH7xcrCYBrfCHCcUTohvU4Grjg7o+bpBvhFvlBuI0eHoU79EPhLp4xEe7hFppPiFqXNHd4FW7gCm/CTfp34Rb5Q7iNe3wKd+i/hbtY4Ee4h6foxewK289TW9Zzvd6ZxJ3EiRba1bkt1SgenuRMl9olXq/U8qDq/XrsfaYyZws1taXXxlhVObvVqY833leTwSATH6e2gMEOBSz6yJGylqgx5/uu6Q0SuLOJc27BLseah73CCDG/57nkjMkypBN41hXTSxy41tjz5jGtR8Z9xoxlv8I09B7ThtPSVOFsS5PSx9iEror/bcCZ/cvH4fbiFyPgZJwAAAB4nG2Qa1PUMBSG+7Jp6Xa7XETECwqiqChF8B9lk2Ob2WzSOWlk8NfTy8L4wTOTM887eebkTJKdZKoi+X/dYQczCKTIsIsccxRYoMQSe9jHAQ7xAkd4iWO8wgle4w3e4h1O8R4fcIZzfMQFPuEzLvEFX/ENV/iOH7hGhRv8xC3u8CsppTW1qxS5jriYgqXf3WJCNnXTFdLVlirt790WJ2PE0cgnjm0hmf39Vh1xUkfcqiPHdr6SXKlGcidWZG2upCWnJc9VQ2q9kbwue/rD3o3jnsMwcPkUpv2eUmxTZUm6vnu1nilfp4p9CPkwwHqpF5plXTXSaUu5Zt8OF4K06VLq1+IZPVDZn0qbIFeWdGac7r9GWOPWYkMuphvjYig9a2LSlTWh2/WxG6S0bbyjoXdetFY+9C0G0Ws+YxqeXzIF85e2C2SBJKtGRKf9XnT/jsxiO/giBuIkeQSgEpzjAAAA)
    format('woff');
  font-weight: normal;
  font-style: normal;
}

:where(:root),
:where(:host) {
  --lumo-icons-align-center: '\ea01';
  --lumo-icons-align-left: '\ea02';
  --lumo-icons-align-right: '\ea03';
  --lumo-icons-angle-down: '\ea04';
  --lumo-icons-angle-left: '\ea05';
  --lumo-icons-angle-right: '\ea06';
  --lumo-icons-angle-up: '\ea07';
  --lumo-icons-arrow-down: '\ea08';
  --lumo-icons-arrow-left: '\ea09';
  --lumo-icons-arrow-right: '\ea0a';
  --lumo-icons-arrow-up: '\ea0b';
  --lumo-icons-bar-chart: '\ea0c';
  --lumo-icons-bell: '\ea0d';
  --lumo-icons-calendar: '\ea0e';
  --lumo-icons-checkmark: '\ea0f';
  --lumo-icons-chevron-down: '\ea10';
  --lumo-icons-chevron-left: '\ea11';
  --lumo-icons-chevron-right: '\ea12';
  --lumo-icons-chevron-up: '\ea13';
  --lumo-icons-clean: '\ea14';
  --lumo-icons-clock: '\ea15';
  --lumo-icons-cog: '\ea16';
  --lumo-icons-cross: '\ea17';
  --lumo-icons-download: '\ea18';
  --lumo-icons-drag-handle: '\ea19';
  --lumo-icons-dropdown: '\ea1a';
  --lumo-icons-edit: '\ea1b';
  --lumo-icons-error: '\ea1c';
  --lumo-icons-eye: '\ea1d';
  --lumo-icons-eye-disabled: '\ea1e';
  --lumo-icons-indent: '\ea1f';
  --lumo-icons-link: '\ea20';
  --lumo-icons-menu: '\ea21';
  --lumo-icons-minus: '\ea22';
  --lumo-icons-ordered-list: '\ea23';
  --lumo-icons-outdent: '\ea24';
  --lumo-icons-phone: '\ea25';
  --lumo-icons-photo: '\ea26';
  --lumo-icons-play: '\ea27';
  --lumo-icons-plus: '\ea28';
  --lumo-icons-redo: '\ea29';
  --lumo-icons-reload: '\ea2a';
  --lumo-icons-resize-handle: '\ea2b';
  --lumo-icons-search: '\ea2c';
  --lumo-icons-undo: '\ea2d';
  --lumo-icons-unordered-list: '\ea2e';
  --lumo-icons-upload: '\ea2f';
  --lumo-icons-user: '\ea30';
}

/* shared/src/icons/vaadin-icons/vaadin-icons.css */
@font-face {
    font-family: 'Vaadin-Icons';
    font-style: normal;
    font-weight: 900;
    font-display: block;
    src: url("../shared/src/icons/vaadin-icons/Vaadin-Icons.woff") format("woff"), url("../shared/src/icons/vaadin-icons/Vaadin-Icons.ttf") format("truetype"), url("../shared/src/icons/vaadin-icons/Vaadin-Icons.eot") format("eot");
}

/* shared/src/icons/jmix-font-icons.css */
html {
    --jmix-font-icon-font-family: 'Vaadin-Icons';

    /* Vaadin icons */
    --jmix-font-icon-abacus: '\e682';
    --jmix-font-icon-absolute-position: '\e61e';
    --jmix-font-icon-academy-cap: '\e902';
    --jmix-font-icon-accessibility: '\e683';
    --jmix-font-icon-accordion-menu: '\e61f';
    --jmix-font-icon-add-dock: '\e620';
    --jmix-font-icon-dock: '\e620';
    --jmix-font-icon-adjust: '\e74a';
    --jmix-font-icon-contrast: '\e74a';
    --jmix-font-icon-adobe-flash: '\e648';
    --jmix-font-icon-airplane: '\e684';
    --jmix-font-icon-alarm: '\e903';
    --jmix-font-icon-align-center: '\e74b';
    --jmix-font-icon-align-justify: '\e7ae';
    --jmix-font-icon-align-left: '\e74c';
    --jmix-font-icon-align-right: '\e74d';
    --jmix-font-icon-alt-a: '\e904';
    --jmix-font-icon-alt: '\e905';
    --jmix-font-icon-ambulance: '\e906';
    --jmix-font-icon-anchor: '\e685';
    --jmix-font-icon-angle-double-down: '\e6e6';
    --jmix-font-icon-angle-double-left: '\e6e7';
    --jmix-font-icon-angle-double-right: '\e6e8';
    --jmix-font-icon-angle-double-up: '\e6e9';
    --jmix-font-icon-angle-down: '\e6ea';
    --jmix-font-icon-angle-left: '\e6eb';
    --jmix-font-icon-angle-right: '\e6ec';
    --jmix-font-icon-angle-up: '\e6ed';
    --jmix-font-icon-archive: '\e6ee';
    --jmix-font-icon-archives: '\e621';
    --jmix-font-icon-area-select: '\e806';
    --jmix-font-icon-arrow-backward: '\e622';
    --jmix-font-icon-arrow-circle-down-o: '\e6ef';
    --jmix-font-icon-arrow-circle-down: '\e6f0';
    --jmix-font-icon-arrow-circle-left-o: '\e6f1';
    --jmix-font-icon-arrow-circle-left: '\e6f2';
    --jmix-font-icon-arrow-circle-right-o: '\e6f3';
    --jmix-font-icon-arrow-circle-right: '\e6f4';
    --jmix-font-icon-arrow-circle-up-o: '\e6f5';
    --jmix-font-icon-arrow-circle-up: '\e6f6';
    --jmix-font-icon-arrow-down: '\e7af';
    --jmix-font-icon-arrow-forward: '\e623';
    --jmix-font-icon-arrow-left: '\e7b0';
    --jmix-font-icon-arrow-long-down: '\e74e';
    --jmix-font-icon-arrow-long-left: '\e74f';
    --jmix-font-icon-arrow-right: '\e7b1';
    --jmix-font-icon-arrow-up: '\e7b2';
    --jmix-font-icon-arrows-cross: '\e750';
    --jmix-font-icon-arrows-long-h: '\e751';
    --jmix-font-icon-arrows-long-right: '\e752';
    --jmix-font-icon-arrows-long-up: '\e753';
    --jmix-font-icon-arrows-long-v: '\e754';
    --jmix-font-icon-arrows: '\e755';
    --jmix-font-icon-asterisk: '\e686';
    --jmix-font-icon-at: '\e624';
    --jmix-font-icon-automation: '\e687';
    --jmix-font-icon-backspace-a: '\e907';
    --jmix-font-icon-backspace: '\e908';
    --jmix-font-icon-backwards: '\e756';
    --jmix-font-icon-ban: '\e6f7';
    --jmix-font-icon-bar-chart-h: '\e909';
    --jmix-font-icon-bar-chart-v: '\e90a';
    --jmix-font-icon-bar-chart: '\e757';
    --jmix-font-icon-barcode: '\e688';
    --jmix-font-icon-bed: '\e90b';
    --jmix-font-icon-bell-o: '\e758';
    --jmix-font-icon-bell-slash-o: '\e625';
    --jmix-font-icon-bell-slash: '\e626';
    --jmix-font-icon-bell: '\e7b4';
    --jmix-font-icon-boat: '\e627';
    --jmix-font-icon-bold: '\e6f8';
    --jmix-font-icon-bolt: '\e759';
    --jmix-font-icon-bomb: '\e689';
    --jmix-font-icon-book-dollar: '\e600';
    --jmix-font-icon-book-percent: '\e601';
    --jmix-font-icon-book: '\e6f9';
    --jmix-font-icon-bookmark-o: '\e7b5';
    --jmix-font-icon-bookmark: '\e7b6';
    --jmix-font-icon-branch: '\e670';
    --jmix-font-icon-briefcase: '\e602';
    --jmix-font-icon-browser: '\e628';
    --jmix-font-icon-bug-o: '\e68a';
    --jmix-font-icon-bug: '\e68b';
    --jmix-font-icon-building-o: '\e7b7';
    --jmix-font-icon-building: '\e7b8';
    --jmix-font-icon-bullets: '\e629';
    --jmix-font-icon-bullseye: '\e6fa';
    --jmix-font-icon-bus: '\e90c';
    --jmix-font-icon-button: '\e62a';
    --jmix-font-icon-calc-book: '\e62b';
    --jmix-font-icon-calc: '\e68c';
    --jmix-font-icon-calendar-briefcase: '\e604';
    --jmix-font-icon-calendar-clock: '\e605';
    --jmix-font-icon-calendar-envelope: '\e62c';
    --jmix-font-icon-calendar-o: '\e7b9';
    --jmix-font-icon-calendar-user: '\e606';
    --jmix-font-icon-calendar: '\e7ba';
    --jmix-font-icon-camera: '\e7bb';
    --jmix-font-icon-car: '\e62d';
    --jmix-font-icon-caret-down: '\e7bc';
    --jmix-font-icon-caret-left: '\e7bd';
    --jmix-font-icon-caret-right: '\e7be';
    --jmix-font-icon-caret-square-down-o: '\e7bf';
    --jmix-font-icon-caret-square-down: '\e7bf';
    --jmix-font-icon-caret-square-left-o: '\e7c0';
    --jmix-font-icon-caret-square-left: '\e7c0';
    --jmix-font-icon-caret-square-right-o: '\e7c1';
    --jmix-font-icon-caret-square-right: '\e7c1';
    --jmix-font-icon-caret-square-up-o: '\e7c2';
    --jmix-font-icon-caret-square-up: '\e7c2';
    --jmix-font-icon-caret-up: '\e7c3';
    --jmix-font-icon-cart-o: '\e6fb';
    --jmix-font-icon-cart: '\e6fc';
    --jmix-font-icon-cash: '\e901';
    --jmix-font-icon-chart-3d: '\e90d';
    --jmix-font-icon-chart-grid: '\e90e';
    --jmix-font-icon-chart-line: '\e68d';
    --jmix-font-icon-chart-timeline: '\e90f';
    --jmix-font-icon-chart: '\e68e';
    --jmix-font-icon-chat: '\e75a';
    --jmix-font-icon-check-circle-o: '\e7c4';
    --jmix-font-icon-check-circle: '\e7c5';
    --jmix-font-icon-check-square-o: '\e6fd';
    --jmix-font-icon-check-square: '\e62e';
    --jmix-font-icon-check: '\e75b';
    --jmix-font-icon-chevron-circle-down-o: '\e7c6';
    --jmix-font-icon-chevron-circle-down: '\e7c7';
    --jmix-font-icon-chevron-circle-left-o: '\e7c8';
    --jmix-font-icon-chevron-circle-left: '\e7c9';
    --jmix-font-icon-chevron-circle-right-o: '\e7ca';
    --jmix-font-icon-chevron-circle-right: '\e7cb';
    --jmix-font-icon-chevron-circle-up-o: '\e7cc';
    --jmix-font-icon-chevron-circle-up: '\e7cd';
    --jmix-font-icon-chevron-down-small: '\e965';
    --jmix-font-icon-chevron-down: '\e7ce';
    --jmix-font-icon-chevron-left-small: '\e966';
    --jmix-font-icon-chevron-left: '\e7cf';
    --jmix-font-icon-chevron-right-small: '\e967';
    --jmix-font-icon-chevron-right: '\e7d0';
    --jmix-font-icon-chevron-up-small: '\e968';
    --jmix-font-icon-chevron-up: '\e7d1';
    --jmix-font-icon-child: '\e62f';
    --jmix-font-icon-circle-thin: '\e75c';
    --jmix-font-icon-circle: '\e75d';
    --jmix-font-icon-clipboard-check: '\e910';
    --jmix-font-icon-clipboard-cross: '\e630';
    --jmix-font-icon-clipboard-heart: '\e631';
    --jmix-font-icon-clipboard-pulse: '\e632';
    --jmix-font-icon-clipboard-text: '\e633';
    --jmix-font-icon-clipboard-user: '\e634';
    --jmix-font-icon-clipboard: '\e635';
    --jmix-font-icon-clock: '\e7d2';
    --jmix-font-icon-close-big: '\e916';
    --jmix-font-icon-close-circle-o: '\e810';
    --jmix-font-icon-close-circle: '\e811';
    --jmix-font-icon-close-small: '\e911';
    --jmix-font-icon-close: '\e7ad';
    --jmix-font-icon-cloud-download-o: '\e75e';
    --jmix-font-icon-cloud-download: '\e75f';
    --jmix-font-icon-cloud-o: '\e760';
    --jmix-font-icon-cloud-upload-o: '\e761';
    --jmix-font-icon-cloud-upload: '\e762';
    --jmix-font-icon-cloud: '\e763';
    --jmix-font-icon-cluster: '\e912';
    --jmix-font-icon-code: '\e68f';
    --jmix-font-icon-coffee: '\e690';
    --jmix-font-icon-cog-o: '\e764';
    --jmix-font-icon-cog: '\e7d3';
    --jmix-font-icon-cogs: '\e691';
    --jmix-font-icon-coin-piles: '\e913';
    --jmix-font-icon-coins: '\e914';
    --jmix-font-icon-combobox: '\e636';
    --jmix-font-icon-command: '\e947';
    --jmix-font-icon-comment-ellipsis-o: '\e765';
    --jmix-font-icon-comment-ellipsis: '\e766';
    --jmix-font-icon-comment-o: '\e767';
    --jmix-font-icon-comment: '\e768';
    --jmix-font-icon-comments-o: '\e769';
    --jmix-font-icon-comments: '\e76a';
    --jmix-font-icon-compass: '\e727';
    --jmix-font-icon-compile: '\e915';
    --jmix-font-icon-compress-square: '\e637';
    --jmix-font-icon-compress: '\e76b';
    --jmix-font-icon-connect-o: '\e76c';
    --jmix-font-icon-connect: '\e76d';
    --jmix-font-icon-controller: '\e692';
    --jmix-font-icon-copy-o: '\e7d4';
    --jmix-font-icon-copy: '\e7d5';
    --jmix-font-icon-copyright: '\e638';
    --jmix-font-icon-corner-lower-left: '\e693';
    --jmix-font-icon-corner-lower-right: '\e694';
    --jmix-font-icon-corner-upper-left: '\e695';
    --jmix-font-icon-corner-upper-right: '\e696';
    --jmix-font-icon-credit-card: '\e76e';
    --jmix-font-icon-crop: '\e76f';
    --jmix-font-icon-cross-cutlery: '\e6fe';
    --jmix-font-icon-crosshairs: '\e7d6';
    --jmix-font-icon-css: '\e639';
    --jmix-font-icon-ctrl-a: '\e917';
    --jmix-font-icon-ctrl: '\e918';
    --jmix-font-icon-cube: '\e697';
    --jmix-font-icon-cubes: '\e698';
    --jmix-font-icon-curly-brackets: '\e63a';
    --jmix-font-icon-cursor-o: '\e919';
    --jmix-font-icon-cursor: '\e91a';
    --jmix-font-icon-cutlery: '\e6ff';
    --jmix-font-icon-dashboard: '\e700';
    --jmix-font-icon-database: '\e737';
    --jmix-font-icon-date-input: '\e63b';
    --jmix-font-icon-deindent: '\e770';
    --jmix-font-icon-del-a: '\e91b';
    --jmix-font-icon-del: '\e91c';
    --jmix-font-icon-dental-chair: '\e607';
    --jmix-font-icon-desktop: '\e7d7';
    --jmix-font-icon-diamond-o: '\e91d';
    --jmix-font-icon-diamond: '\e91e';
    --jmix-font-icon-diploma-scroll: '\e969';
    --jmix-font-icon-diploma: '\e964';
    --jmix-font-icon-disc: '\e701';
    --jmix-font-icon-doctor-briefcase: '\e608';
    --jmix-font-icon-doctor: '\e609';
    --jmix-font-icon-dollar: '\e60a';
    --jmix-font-icon-dot-circle: '\e702';
    --jmix-font-icon-download-alt: '\e699';
    --jmix-font-icon-download: '\e703';
    --jmix-font-icon-drop: '\e704';
    --jmix-font-icon-edit: '\e771';
    --jmix-font-icon-eject: '\e772';
    --jmix-font-icon-elastic: '\e63c';
    --jmix-font-icon-ellipsis-circle-o: '\e7d9';
    --jmix-font-icon-ellipsis-circle: '\e7da';
    --jmix-font-icon-ellipsis-dots-h: '\e91f';
    --jmix-font-icon-ellipsis-dots-v: '\e920';
    --jmix-font-icon-ellipsis-h: '\e773';
    --jmix-font-icon-ellipsis-v: '\e774';
    --jmix-font-icon-enter-arrow: '\e921';
    --jmix-font-icon-enter: '\e922';
    --jmix-font-icon-envelope-o: '\e7db';
    --jmix-font-icon-envelope-open-o: '\e63d';
    --jmix-font-icon-envelope-open: '\e63e';
    --jmix-font-icon-envelope: '\e7dc';
    --jmix-font-icon-envelopes-o: '\e923';
    --jmix-font-icon-envelopes: '\e924';
    --jmix-font-icon-eraser: '\e69a';
    --jmix-font-icon-esc-a: '\e925';
    --jmix-font-icon-esc: '\e926';
    --jmix-font-icon-euro: '\e927';
    --jmix-font-icon-exchange: '\e705';
    --jmix-font-icon-exclamation-circle-o: '\e706';
    --jmix-font-icon-exclamation-circle: '\e707';
    --jmix-font-icon-exclamation: '\e708';
    --jmix-font-icon-exit-o: '\e60b';
    --jmix-font-icon-exit: '\e60c';
    --jmix-font-icon-expand-full: '\e775';
    --jmix-font-icon-expand-square: '\e7dd';
    --jmix-font-icon-expand: '\e776';
    --jmix-font-icon-external-browser: '\e63f';
    --jmix-font-icon-external-link: '\e7de';
    --jmix-font-icon-eye-slash: '\e709';
    --jmix-font-icon-eye: '\e7df';
    --jmix-font-icon-eyedropper: '\e640';
    --jmix-font-icon-facebook-square: '\e69b';
    --jmix-font-icon-facebook: '\e69c';
    --jmix-font-icon-factory: '\e641';
    --jmix-font-icon-family: '\e928';
    --jmix-font-icon-fast-backward: '\e777';
    --jmix-font-icon-fast-forward: '\e778';
    --jmix-font-icon-female: '\e69d';
    --jmix-font-icon-file-add: '\e929';
    --jmix-font-icon-file-code: '\e70a';
    --jmix-font-icon-file-font: '\e69e';
    --jmix-font-icon-file-movie: '\e70b';
    --jmix-font-icon-file-o: '\e7e0';
    --jmix-font-icon-file-picture: '\e70c';
    --jmix-font-icon-file-presentation: '\e69f';
    --jmix-font-icon-file-process: '\e642';
    --jmix-font-icon-file-refresh: '\e643';
    --jmix-font-icon-file-remove: '\e92a';
    --jmix-font-icon-file-search: '\e92b';
    --jmix-font-icon-file-sound: '\e70d';
    --jmix-font-icon-file-start: '\e644';
    --jmix-font-icon-file-table: '\e6a0';
    --jmix-font-icon-file-text-o: '\e7e1';
    --jmix-font-icon-file-text: '\e7e2';
    --jmix-font-icon-file-tree-small: '\e645';
    --jmix-font-icon-file-tree-sub: '\e646';
    --jmix-font-icon-file-tree: '\e647';
    --jmix-font-icon-file-zip: '\e70e';
    --jmix-font-icon-file: '\e7e3';
    --jmix-font-icon-fill: '\e6a1';
    --jmix-font-icon-film: '\e779';
    --jmix-font-icon-filter: '\e6a2';
    --jmix-font-icon-fire: '\e6a3';
    --jmix-font-icon-flag-checkered: '\e70f';
    --jmix-font-icon-flag-o: '\e710';
    --jmix-font-icon-flag: '\e711';
    --jmix-font-icon-flash: '\e712';
    --jmix-font-icon-flask: '\e7e4';
    --jmix-font-icon-flight-landing: '\e92c';
    --jmix-font-icon-flight-takeoff: '\e92d';
    --jmix-font-icon-flip-h: '\e649';
    --jmix-font-icon-flip-v: '\e64a';
    --jmix-font-icon-folder-add: '\e92e';
    --jmix-font-icon-folder-o: '\e7e5';
    --jmix-font-icon-folder-open-o: '\e77a';
    --jmix-font-icon-folder-open: '\e77b';
    --jmix-font-icon-folder-remove: '\e92f';
    --jmix-font-icon-folder-search: '\e930';
    --jmix-font-icon-folder: '\e7e6';
    --jmix-font-icon-font: '\e713';
    --jmix-font-icon-forklift: '\e957';
    --jmix-font-icon-form: '\e64b';
    --jmix-font-icon-forward: '\e77c';
    --jmix-font-icon-frown-o: '\e6a4';
    --jmix-font-icon-frown: '\e6a4';
    --jmix-font-icon-function: '\e64c';
    --jmix-font-icon-funnel: '\e931';
    --jmix-font-icon-gamepad: '\e714';
    --jmix-font-icon-gavel: '\e6a5';
    --jmix-font-icon-gift: '\e715';
    --jmix-font-icon-glass: '\e77d';
    --jmix-font-icon-glasses: '\e7e7';
    --jmix-font-icon-globe-wire: '\e932';
    --jmix-font-icon-globe: '\e77e';
    --jmix-font-icon-golf: '\e60d';
    --jmix-font-icon-google-plus-square: '\e6a6';
    --jmix-font-icon-google-plus: '\e6a7';
    --jmix-font-icon-grab: '\e64d';
    --jmix-font-icon-grid-bevel: '\e64e';
    --jmix-font-icon-grid-big-o: '\e7e8';
    --jmix-font-icon-grid-big: '\e7e9';
    --jmix-font-icon-grid-h: '\e64f';
    --jmix-font-icon-grid-small-o: '\e7ea';
    --jmix-font-icon-grid-small: '\e7eb';
    --jmix-font-icon-grid-v: '\e650';
    --jmix-font-icon-grid: '\e651';
    --jmix-font-icon-group: '\e60e';
    --jmix-font-icon-hammer: '\e933';
    --jmix-font-icon-hand: '\e652';
    --jmix-font-icon-handle-corner: '\e716';
    --jmix-font-icon-hands-up: '\e6a8';
    --jmix-font-icon-handshake: '\e934';
    --jmix-font-icon-harddrive-o: '\e717';
    --jmix-font-icon-harddrive: '\e718';
    --jmix-font-icon-hash: '\e6a9';
    --jmix-font-icon-header: '\e719';
    --jmix-font-icon-headphones: '\e71a';
    --jmix-font-icon-headset: '\e935';
    --jmix-font-icon-health-card: '\e60f';
    --jmix-font-icon-heart-o: '\e77f';
    --jmix-font-icon-heart: '\e780';
    --jmix-font-icon-home-o: '\e7ec';
    --jmix-font-icon-home: '\e7ed';
    --jmix-font-icon-hospital: '\e936';
    --jmix-font-icon-hourglass-empty: '\e937';
    --jmix-font-icon-hourglass-end: '\e938';
    --jmix-font-icon-hourglass-start: '\e939';
    --jmix-font-icon-hourglass: '\e93a';
    --jmix-font-icon-inbox: '\e71b';
    --jmix-font-icon-indent: '\e781';
    --jmix-font-icon-info-circle-o: '\e71c';
    --jmix-font-icon-info-circle: '\e71d';
    --jmix-font-icon-info: '\e71e';
    --jmix-font-icon-input: '\e653';
    --jmix-font-icon-insert: '\e7d8';
    --jmix-font-icon-institution: '\e6aa';
    --jmix-font-icon-invoice: '\e610';
    --jmix-font-icon-italic: '\e720';
    --jmix-font-icon-key-o: '\e6ab';
    --jmix-font-icon-key: '\e6ac';
    --jmix-font-icon-keyboard-o: '\e721';
    --jmix-font-icon-keyboard: '\e722';
    --jmix-font-icon-laptop: '\e782';
    --jmix-font-icon-layout: '\e654';
    --jmix-font-icon-level-down-bold: '\e611';
    --jmix-font-icon-level-down: '\e783';
    --jmix-font-icon-level-left-bold: '\e612';
    --jmix-font-icon-level-left: '\e784';
    --jmix-font-icon-level-right-bold: '\e655';
    --jmix-font-icon-level-right: '\e785';
    --jmix-font-icon-level-up-bold: '\e613';
    --jmix-font-icon-level-up: '\e786';
    --jmix-font-icon-lifebuoy: '\e6ad';
    --jmix-font-icon-lightbulb: '\e6ae';
    --jmix-font-icon-line-bar-chart: '\e93b';
    --jmix-font-icon-line-chart: '\e93c';
    --jmix-font-icon-line-h: '\e723';
    --jmix-font-icon-line-v: '\e724';
    --jmix-font-icon-lines-list: '\e7ee';
    --jmix-font-icon-lines: '\e7ef';
    --jmix-font-icon-link: '\e725';
    --jmix-font-icon-list-ol: '\e71f';
    --jmix-font-icon-list-select: '\e656';
    --jmix-font-icon-list-ul: '\e7f0';
    --jmix-font-icon-list: '\e7f1';
    --jmix-font-icon-location-arrow-circle-o: '\e726';
    --jmix-font-icon-location-arrow-circle: '\e727';
    --jmix-font-icon-location-arrow: '\e728';
    --jmix-font-icon-lock: '\e7f2';
    --jmix-font-icon-magic: '\e6b1';
    --jmix-font-icon-magnet: '\e787';
    --jmix-font-icon-mailbox: '\e729';
    --jmix-font-icon-male: '\e6b2';
    --jmix-font-icon-map-marker: '\e788';
    --jmix-font-icon-margin-bottom: '\e657';
    --jmix-font-icon-margin-left: '\e658';
    --jmix-font-icon-margin-right: '\e659';
    --jmix-font-icon-margin-top: '\e65a';
    --jmix-font-icon-margin: '\e65b';
    --jmix-font-icon-medal: '\e6b3';
    --jmix-font-icon-megaphone: '\e6b4';
    --jmix-font-icon-meh-o: '\e6b5';
    --jmix-font-icon-meh: '\e6b5';
    --jmix-font-icon-menu: '\e7b3';
    --jmix-font-icon-microphone: '\e72a';
    --jmix-font-icon-minus-circle-o: '\e7f3';
    --jmix-font-icon-minus-circle: '\e7f4';
    --jmix-font-icon-minus-square-o: '\e7f5';
    --jmix-font-icon-minus-square: '\e7f5';
    --jmix-font-icon-minus: '\e7f6';
    --jmix-font-icon-mobile-browser: '\e93d';
    --jmix-font-icon-mobile-retro: '\e93e';
    --jmix-font-icon-mobile: '\e7f7';
    --jmix-font-icon-modal-list: '\e72b';
    --jmix-font-icon-modal: '\e7f8';
    --jmix-font-icon-money-deposit: '\e93f';
    --jmix-font-icon-money-exchange: '\e940';
    --jmix-font-icon-money-withdraw: '\e941';
    --jmix-font-icon-money: '\e6b6';
    --jmix-font-icon-moon-o: '\e789';
    --jmix-font-icon-moon: '\e78a';
    --jmix-font-icon-morning: '\e942';
    --jmix-font-icon-movie: '\e78b';
    --jmix-font-icon-music: '\e78c';
    --jmix-font-icon-mute: '\e72c';
    --jmix-font-icon-native-button: '\e65c';
    --jmix-font-icon-newspaper: '\e943';
    --jmix-font-icon-notebook: '\e65d';
    --jmix-font-icon-nurse: '\e944';
    --jmix-font-icon-office: '\e945';
    --jmix-font-icon-open-book: '\e7f9';
    --jmix-font-icon-option-a: '\e946';
    --jmix-font-icon-option: '\e947';
    --jmix-font-icon-options: '\e65e';
    --jmix-font-icon-orientation: '\e65f';
    --jmix-font-icon-outdent: '\e770';
    --jmix-font-icon-out: '\e614';
    --jmix-font-icon-outbox: '\e660';
    --jmix-font-icon-package: '\e6b7';
    --jmix-font-icon-padding-bottom: '\e661';
    --jmix-font-icon-padding-left: '\e662';
    --jmix-font-icon-padding-right: '\e663';
    --jmix-font-icon-padding-top: '\e664';
    --jmix-font-icon-padding: '\e665';
    --jmix-font-icon-paint-roll: '\e666';
    --jmix-font-icon-paintbrush: '\e6b8';
    --jmix-font-icon-palette: '\e667';
    --jmix-font-icon-panel: '\e668';
    --jmix-font-icon-paperclip: '\e72d';
    --jmix-font-icon-paperplane-o: '\e6ba';
    --jmix-font-icon-paperplane: '\e6b9';
    --jmix-font-icon-paragraph: '\e6bb';
    --jmix-font-icon-password: '\e669';
    --jmix-font-icon-paste: '\e6bc';
    --jmix-font-icon-pause: '\e78d';
    --jmix-font-icon-pencil: '\e7fa';
    --jmix-font-icon-person: '\e6a8';
    --jmix-font-icon-phone-landline: '\e948';
    --jmix-font-icon-phone: '\e7fb';
    --jmix-font-icon-picture: '\e7fc';
    --jmix-font-icon-pie-bar-chart: '\e949';
    --jmix-font-icon-pie-chart: '\e6bd';
    --jmix-font-icon-piggy-bank-coin: '\e94a';
    --jmix-font-icon-piggy-bank: '\e94b';
    --jmix-font-icon-pill: '\e615';
    --jmix-font-icon-pills: '\e616';
    --jmix-font-icon-pin-post: '\e6be';
    --jmix-font-icon-pin: '\e7fd';
    --jmix-font-icon-play-circle-o: '\e72e';
    --jmix-font-icon-play-circle: '\e731';
    --jmix-font-icon-play: '\e78e';
    --jmix-font-icon-plug: '\e66a';
    --jmix-font-icon-plus-circle-o: '\e7fe';
    --jmix-font-icon-plus-circle: '\e7ff';
    --jmix-font-icon-plus-minus: '\e603';
    --jmix-font-icon-plus-square-o: '\e800';
    --jmix-font-icon-plus-square: '\e800';
    --jmix-font-icon-plus: '\e801';
    --jmix-font-icon-pointer: '\e66b';
    --jmix-font-icon-power-off: '\e78f';
    --jmix-font-icon-presentation: '\e6bf';
    --jmix-font-icon-print: '\e802';
    --jmix-font-icon-progressbar: '\e66c';
    --jmix-font-icon-puzzle-piece: '\e6c0';
    --jmix-font-icon-pyramid-chart: '\e94c';
    --jmix-font-icon-qrcode: '\e6c1';
    --jmix-font-icon-question-circle-o: '\e72f';
    --jmix-font-icon-question-circle: '\e730';
    --jmix-font-icon-question: '\e732';
    --jmix-font-icon-quote-left: '\e6c2';
    --jmix-font-icon-quote-right: '\e6c3';
    --jmix-font-icon-random: '\e733';
    --jmix-font-icon-raster-lower-left: '\e6c4';
    --jmix-font-icon-raster: '\e6c5';
    --jmix-font-icon-records: '\e94d';
    --jmix-font-icon-recycle: '\e6c6';
    --jmix-font-icon-refresh: '\e790';
    --jmix-font-icon-reply-all: '\e791';
    --jmix-font-icon-reply: '\e792';
    --jmix-font-icon-resize-h: '\e66d';
    --jmix-font-icon-resize-v: '\e66e';
    --jmix-font-icon-retweet: '\e793';
    --jmix-font-icon-rhombus: '\e66f';
    --jmix-font-icon-road-branch: '\e670';
    --jmix-font-icon-road-branches: '\e671';
    --jmix-font-icon-road-split: '\e672';
    --jmix-font-icon-road: '\e6c7';
    --jmix-font-icon-rocket: '\e6c8';
    --jmix-font-icon-rotate-left: '\e794';
    --jmix-font-icon-rotate-right: '\e795';
    --jmix-font-icon-rss-square: '\e6c9';
    --jmix-font-icon-rss: '\e6ca';
    --jmix-font-icon-safe-lock: '\e6cb';
    --jmix-font-icon-safe: '\e6cc';
    --jmix-font-icon-scale-unbalance: '\e94e';
    --jmix-font-icon-scale: '\e94f';
    --jmix-font-icon-scatter-chart: '\e950';
    --jmix-font-icon-scissors: '\e734';
    --jmix-font-icon-screwdriver: '\e735';
    --jmix-font-icon-search-minus: '\e804';
    --jmix-font-icon-search-plus: '\e803';
    --jmix-font-icon-search: '\e805';
    --jmix-font-icon-select: '\e673';
    --jmix-font-icon-server: '\e736';
    --jmix-font-icon-share-square: '\e6cd';
    --jmix-font-icon-share: '\e796';
    --jmix-font-icon-shield: '\e6ce';
    --jmix-font-icon-shift-arrow: '\e951';
    --jmix-font-icon-shift: '\e952';
    --jmix-font-icon-shop: '\e953';
    --jmix-font-icon-sign-in-alt: '\e6af';
    --jmix-font-icon-sign-in: '\e797';
    --jmix-font-icon-sign-out-alt: '\e6b0';
    --jmix-font-icon-sign-out: '\e798';
    --jmix-font-icon-signal: '\e738';
    --jmix-font-icon-sitemap: '\e739';
    --jmix-font-icon-slider: '\e674';
    --jmix-font-icon-sliders: '\e6cf';
    --jmix-font-icon-smiley-o: '\e6d0';
    --jmix-font-icon-smiley: '\e6d0';
    --jmix-font-icon-sort: '\e799';
    --jmix-font-icon-sound-disable: '\e79a';
    --jmix-font-icon-spark-line: '\e954';
    --jmix-font-icon-specialist: '\e617';
    --jmix-font-icon-spinner-arc: '\e6d1';
    --jmix-font-icon-spinner-third: '\e6d2';
    --jmix-font-icon-spinner: '\e6d3';
    --jmix-font-icon-spline-area-chart: '\e955';
    --jmix-font-icon-spline-chart: '\e956';
    --jmix-font-icon-split-h: '\e807';
    --jmix-font-icon-split-v: '\e808';
    --jmix-font-icon-split: '\e675';
    --jmix-font-icon-spoon: '\e73a';
    --jmix-font-icon-square-shadow: '\e79b';
    --jmix-font-icon-square: '\e7a6';
    --jmix-font-icon-star-half-left-o: '\e79c';
    --jmix-font-icon-star-half-left: '\e79d';
    --jmix-font-icon-star-half-right-o: '\e79e';
    --jmix-font-icon-star-half-right: '\e79f';
    --jmix-font-icon-star-half: '\e79d';
    --jmix-font-icon-star-o: '\e7a0';
    --jmix-font-icon-star: '\e7a1';
    --jmix-font-icon-start-cog: '\e676';
    --jmix-font-icon-step-backward: '\e7a2';
    --jmix-font-icon-step-forward: '\e7a3';
    --jmix-font-icon-stethoscope: '\e618';
    --jmix-font-icon-stock: '\e957';
    --jmix-font-icon-stop-cog: '\e677';
    --jmix-font-icon-stop: '\e7a4';
    --jmix-font-icon-stopwatch: '\e958';
    --jmix-font-icon-storage: '\e959';
    --jmix-font-icon-strikethrough: '\e73b';
    --jmix-font-icon-subscript: '\e6d4';
    --jmix-font-icon-suitcase: '\e809';
    --jmix-font-icon-sun-down: '\e95a';
    --jmix-font-icon-sun-o: '\e73c';
    --jmix-font-icon-sun: '\e73c';
    --jmix-font-icon-sun-rise: '\e95b';
    --jmix-font-icon-superscript: '\e6d5';
    --jmix-font-icon-sword: '\e678';
    --jmix-font-icon-tab-a: '\e95c';
    --jmix-font-icon-tab: '\e95d';
    --jmix-font-icon-table: '\e7a5';
    --jmix-font-icon-tablet: '\e80a';
    --jmix-font-icon-tabs: '\e679';
    --jmix-font-icon-tag: '\e6d6';
    --jmix-font-icon-tags: '\e6d7';
    --jmix-font-icon-tasks: '\e73d';
    --jmix-font-icon-taxi: '\e67a';
    --jmix-font-icon-teeth: '\e619';
    --jmix-font-icon-terminal: '\e6d8';
    --jmix-font-icon-text-height: '\e73e';
    --jmix-font-icon-text-input: '\e67b';
    --jmix-font-icon-text-label: '\e67c';
    --jmix-font-icon-text-width: '\e73f';
    --jmix-font-icon-thin-square: '\e7a6';
    --jmix-font-icon-thumbs-down-o: '\e6d9';
    --jmix-font-icon-thumbs-down: '\e6da';
    --jmix-font-icon-thumbs-up-o: '\e6db';
    --jmix-font-icon-thumbs-up: '\e6dc';
    --jmix-font-icon-ticket: '\e740';
    --jmix-font-icon-time-backward: '\e7a7';
    --jmix-font-icon-time-forward: '\e7a8';
    --jmix-font-icon-timer: '\e95e';
    --jmix-font-icon-toolbox: '\e741';
    --jmix-font-icon-tools: '\e742';
    --jmix-font-icon-tooth: '\e67d';
    --jmix-font-icon-touch: '\e95f';
    --jmix-font-icon-train: '\e67e';
    --jmix-font-icon-trash: '\e80b';
    --jmix-font-icon-tree-table: '\e67f';
    --jmix-font-icon-trending-down: '\e960';
    --jmix-font-icon-trending-up: '\e961';
    --jmix-font-icon-trophy: '\e743';
    --jmix-font-icon-truck: '\e6dd';
    --jmix-font-icon-twin-col-select: '\e680';
    --jmix-font-icon-twitter-square: '\e6de';
    --jmix-font-icon-twitter: '\e6df';
    --jmix-font-icon-umbrella: '\e6e0';
    --jmix-font-icon-underline: '\e744';
    --jmix-font-icon-unlink: '\e745';
    --jmix-font-icon-unlock: '\e80c';
    --jmix-font-icon-upload-alt: '\e6e1';
    --jmix-font-icon-upload: '\e746';
    --jmix-font-icon-user-card: '\e61a';
    --jmix-font-icon-user-check: '\e61b';
    --jmix-font-icon-user-clock: '\e61c';
    --jmix-font-icon-user-heart: '\e61d';
    --jmix-font-icon-user-star: '\e962';
    --jmix-font-icon-user: '\e80d';
    --jmix-font-icon-users: '\e747';
    --jmix-font-icon-vaadin-h: '\e80e';
    --jmix-font-icon-vaadin-v: '\e80f';
    --jmix-font-icon-viewport: '\e681';
    --jmix-font-icon-vimeo-square: '\e6e2';
    --jmix-font-icon-vimeo: '\e6e3';
    --jmix-font-icon-volume-down: '\e7a9';
    --jmix-font-icon-volume-off: '\e7aa';
    --jmix-font-icon-volume-up: '\e7ab';
    --jmix-font-icon-volume: '\e7ac';
    --jmix-font-icon-wallet: '\e963';
    --jmix-font-icon-warning: '\e748';
    --jmix-font-icon-workplace: '\e900';
    --jmix-font-icon-wrench: '\e749';
    --jmix-font-icon-youtube-square: '\e6e4';
    --jmix-font-icon-youtube: '\e6e5';

    /* Lumo icons (missing in Vaadin icons) */
    --jmix-font-icon-photo: var(--lumo-icons-photo);
    --jmix-font-icon-redo: var(--lumo-icons-redo);
    --jmix-font-icon-undo: var(--lumo-icons-undo);

    /* Jmix specific icons */
    --jmix-font-icon-ok: var(--jmix-font-icon-check);
    --jmix-font-icon-cancel: var(--jmix-font-icon-ban);
    --jmix-font-icon-yes: var(--jmix-font-icon-check);
    --jmix-font-icon-no: var(--jmix-font-icon-ban);

    --jmix-font-icon-dialog-ok: var(--jmix-font-icon-check);
    --jmix-font-icon-dialog-cancel: var(--jmix-font-icon-ban);
    --jmix-font-icon-dialog-yes: var(--jmix-font-icon-check);
    --jmix-font-icon-dialog-no: var(--jmix-font-icon-ban);
    --jmix-font-icon-dialog-close: var(--jmix-font-icon-close);

    --jmix-font-icon-create-action: var(--jmix-font-icon-plus);
    --jmix-font-icon-edit-action: var(--jmix-font-icon-pencil);
    --jmix-font-icon-remove-action: var(--jmix-font-icon-trash);
    --jmix-font-icon-add-action: var(--jmix-font-icon-plus);
    --jmix-font-icon-exclude-action: var(--jmix-font-icon-close);
    --jmix-font-icon-read-action: var(--jmix-font-icon-eye);
    --jmix-font-icon-refresh-action: var(--jmix-font-icon-refresh);

    --jmix-font-icon-view-close-action: var(--jmix-font-icon-ban);
    --jmix-font-icon-detail-save-close-action: var(--jmix-font-icon-check);
    --jmix-font-icon-detail-save-action: var(--jmix-font-icon-archive);
    --jmix-font-icon-detail-close-action: var(--jmix-font-icon-ban);
    --jmix-font-icon-detail-discard-action: var(--jmix-font-icon-ban);
    --jmix-font-icon-detail-enable-editing-action: var(--jmix-font-icon-pencil);
    --jmix-font-icon-lookup-select-action: var(--jmix-font-icon-check);
    --jmix-font-icon-lookup-discard-action: var(--jmix-font-icon-ban);

    --jmix-font-icon-entity-lookup-action: var(--jmix-font-icon-ellipsis-dots-h);
    --jmix-font-icon-entity-clear-action: var(--jmix-font-icon-close);
    --jmix-font-icon-entity-open-action: var(--jmix-font-icon-search-plus);

    --jmix-font-icon-value-clear-action: var(--jmix-font-icon-close);

    --jmix-font-icon-multi-value-select-action: var(--jmix-font-icon-ellipsis-dots-h);

    --jmix-font-icon-date-interval-action: var(--jmix-font-icon-ellipsis-dots-h);

    --jmix-font-icon-logout-action: var(--jmix-font-icon-sign-out);

    --jmix-font-icon-bulk-edit-action: var(--jmix-font-icon-table);

    --jmix-font-icon-json-export-action: var(--jmix-font-icon-file-code);
    --jmix-font-icon-excel-export-action: var(--jmix-font-icon-file-table);

    --jmix-font-icon-show-role-assignments-action: var(--jmix-font-icon-shield);
    --jmix-font-icon-assign-to-users-action: var(--jmix-font-icon-users);

    --jmix-font-icon-run-report-action: var(--jmix-font-icon-print);
    --jmix-font-icon-run-single-entity-report-action: var(--jmix-font-icon-print);
    --jmix-font-icon-run-list-entity-report-action: var(--jmix-font-icon-print);
    --jmix-font-icon-show-execution-report-history-action: var(--jmix-font-icon-clock);

    --jmix-font-icon-days-of-week-edit-action: var(--jmix-font-icon-ellipsis-dots-h);

    --jmix-font-icon-user-menu-theme-switch-action-system-theme: var(--jmix-font-icon-adjust);
    --jmix-font-icon-user-menu-theme-switch-action-light-theme: var(--jmix-font-icon-sun-o);
    --jmix-font-icon-user-menu-theme-switch-action-dark-theme: var(--jmix-font-icon-moon-o);

    --jmix-font-icon-user-menu-substitute-user-action: var(--jmix-font-icon-exchange);

    --jmix-font-icon-generic-filter-save-action: var(--jmix-font-icon-archive);
    --jmix-font-icon-generic-filter-edit-action: var(--jmix-font-icon-pencil);
    --jmix-font-icon-generic-filter-copy-action: var(--jmix-font-icon-copy);
    --jmix-font-icon-generic-filter-remove-action: var(--jmix-font-icon-trash);
    --jmix-font-icon-generic-filter-clear-values-action: var(--jmix-font-icon-eraser);
    --jmix-font-icon-generic-filter-make-default-action: var(--jmix-font-icon-star);
    --jmix-font-icon-generic-filter-add-condition-action: var(--jmix-font-icon-plus);

    --jmix-font-icon-create-notification-action: var(--jmix-font-icon-plus);

    --jmix-font-icon-interval-field-help: var(--jmix-font-icon-question-circle);

    --jmix-font-icon-combo-button-dropdown: var(--jmix-font-icon-chevron-down);

    --jmix-font-icon-pagination-first-page: var(--jmix-font-icon-angle-double-left);
    --jmix-font-icon-pagination-previous-page: var(--jmix-font-icon-angle-left);
    --jmix-font-icon-pagination-next-page: var(--jmix-font-icon-angle-right);
    --jmix-font-icon-pagination-last-page: var(--jmix-font-icon-angle-double-right);

    --jmix-font-icon-twin-column-select-all: var(--jmix-font-icon-angle-double-right);
    --jmix-font-icon-twin-column-deselect-all: var(--jmix-font-icon-angle-double-left);
    --jmix-font-icon-twin-column-select: var(--jmix-font-icon-angle-right);
    --jmix-font-icon-twin-column-deselect: var(--jmix-font-icon-angle-left);

    --jmix-font-icon-generic-filter-settings: var(--jmix-font-icon-cog);
    --jmix-font-icon-generic-filter-condition-remove: var(--jmix-font-icon-trash);

    --jmix-font-icon-data-grid-header-filter: var(--jmix-font-icon-filter);
    --jmix-font-icon-data-grid-header-filter-apply: var(--jmix-font-icon-check);
    --jmix-font-icon-data-grid-header-filter-cancel: var(--jmix-font-icon-ban);
    --jmix-font-icon-data-grid-header-filter-clear: var(--jmix-font-icon-eraser);

    --jmix-font-icon-search-field-search: var(--jmix-font-icon-search);
    --jmix-font-icon-search-field-settings: var(--jmix-font-icon-ellipsis-dots-v);

    --jmix-font-icon-notifications-indicator: var(--jmix-font-icon-bell);
    --jmix-font-icon-notifications-indicator-refresh: var(--jmix-font-icon-refresh);

    --jmix-font-icon-columns-grouper-item-add: var(--lumo-icons-plus);
    --jmix-font-icon-columns-grouper-item-remove: var(--lumo-icons-cross);

    --jmix-font-icon-side-panel-layout-closer: var(--lumo-icons-cross);
}

.jmix-font-icon:before {
    font-family: var(--jmix-font-icon-font-family);
}

.jmix-font-icon.jmix-font-icon-lumo:before {
    font-family: lumo-icons;
}

/* Jmix specific icons */
.jmix-font-icon-ok:before {
    content: var(--jmix-font-icon-ok);
}

.jmix-font-icon-cancel:before {
    content: var(--jmix-font-icon-cancel);
}

.jmix-font-icon-yes:before {
    content: var(--jmix-font-icon-yes);
}

.jmix-font-icon-no:before {
    content: var(--jmix-font-icon-no);
}

.jmix-font-icon-dialog-ok:before {
    content: var(--jmix-font-icon-dialog-ok);
}

.jmix-font-icon-dialog-cancel:before {
    content: var(--jmix-font-icon-dialog-cancel);
}

.jmix-font-icon-dialog-yes:before {
    content: var(--jmix-font-icon-dialog-yes);
}

.jmix-font-icon-dialog-no:before {
    content: var(--jmix-font-icon-dialog-no);
}

.jmix-font-icon-dialog-close:before {
    content: var(--jmix-font-icon-dialog-close);
}

.jmix-font-icon-create-action:before {
    content: var(--jmix-font-icon-create-action);
}

.jmix-font-icon-edit-action:before {
    content: var(--jmix-font-icon-edit-action);
}

.jmix-font-icon-remove-action:before {
    content: var(--jmix-font-icon-remove-action);
}

.jmix-font-icon-add-action:before {
    content: var(--jmix-font-icon-add-action);
}

.jmix-font-icon-exclude-action:before {
    content: var(--jmix-font-icon-exclude-action);
}

.jmix-font-icon-read-action:before {
    content: var(--jmix-font-icon-read-action);
}

.jmix-font-icon-refresh-action:before {
    content: var(--jmix-font-icon-refresh-action);
}

.jmix-font-icon-view-close-action:before {
    content: var(--jmix-font-icon-view-close-action);
}

.jmix-font-icon-detail-save-close-action:before {
    content: var(--jmix-font-icon-detail-save-close-action);
}

.jmix-font-icon-detail-save-action:before {
    content: var(--jmix-font-icon-detail-save-action);
}

.jmix-font-icon-detail-close-action:before {
    content: var(--jmix-font-icon-detail-close-action);
}

.jmix-font-icon-detail-discard-action:before {
    content: var(--jmix-font-icon-detail-discard-action);
}

.jmix-font-icon-detail-enable-editing-action:before {
    content: var(--jmix-font-icon-detail-enable-editing-action);
}

.jmix-font-icon-lookup-select-action:before {
    content: var(--jmix-font-icon-lookup-select-action);
}

.jmix-font-icon-lookup-discard-action:before {
    content: var(--jmix-font-icon-lookup-discard-action);
}

.jmix-font-icon-entity-lookup-action:before {
    content: var(--jmix-font-icon-entity-lookup-action);
}

.jmix-font-icon-entity-clear-action:before {
    content: var(--jmix-font-icon-entity-clear-action);
}

.jmix-font-icon-entity-open-action:before {
    content: var(--jmix-font-icon-entity-open-action);
}

.jmix-font-icon-value-clear-action:before {
    content: var(--jmix-font-icon-value-clear-action);
}

.jmix-font-icon-multi-value-select-action:before {
    content: var(--jmix-font-icon-multi-value-select-action);
}

.jmix-font-icon-date-interval-action:before {
    content: var(--jmix-font-icon-date-interval-action);
}

.jmix-font-icon-logout-action:before {
    content: var(--jmix-font-icon-logout-action);
}

.jmix-font-icon-bulk-edit-action:before {
    content: var(--jmix-font-icon-bulk-edit-action);
}

.jmix-font-icon-json-export-action:before {
    content: var(--jmix-font-icon-json-export-action);
}

.jmix-font-icon-excel-export-action:before {
    content: var(--jmix-font-icon-excel-export-action);
}

.jmix-font-icon-show-role-assignments-action:before {
    content: var(--jmix-font-icon-show-role-assignments-action);
}

.jmix-font-icon-assign-to-users-action:before {
    content: var(--jmix-font-icon-assign-to-users-action);
}

.jmix-font-icon-run-report-action:before {
    content: var(--jmix-font-icon-run-report-action);
}

.jmix-font-icon-run-single-entity-report-action:before {
    content: var(--jmix-font-icon-run-single-entity-report-action);
}

.jmix-font-icon-run-list-entity-report-action:before {
    content: var(--jmix-font-icon-run-list-entity-report-action);
}

.jmix-font-icon-show-execution-report-history-action:before {
    content: var(--jmix-font-icon-show-execution-report-history-action);
}

.jmix-font-icon-days-of-week-edit-action:before {
    content: var(--jmix-font-icon-days-of-week-edit-action);
}

.jmix-font-icon-user-menu-theme-switch-action-system-theme:before {
    content: var(--jmix-font-icon-user-menu-theme-switch-action-system-theme);
}

.jmix-font-icon-user-menu-theme-switch-action-light-theme:before {
    content: var(--jmix-font-icon-user-menu-theme-switch-action-light-theme);
}

.jmix-font-icon-user-menu-theme-switch-action-dark-theme:before {
    content: var(--jmix-font-icon-user-menu-theme-switch-action-dark-theme);
}

.jmix-font-icon-user-menu-substitute-user-action:before {
    content: var(--jmix-font-icon-user-menu-substitute-user-action);
}

.jmix-font-icon-generic-filter-save-action:before {
    content: var(--jmix-font-icon-generic-filter-save-action);
}

.jmix-font-icon-generic-filter-edit-action:before {
    content: var(--jmix-font-icon-generic-filter-edit-action);
}

.jmix-font-icon-generic-filter-copy-action:before {
    content: var(--jmix-font-icon-generic-filter-copy-action);
}

.jmix-font-icon-generic-filter-remove-action:before {
    content: var(--jmix-font-icon-generic-filter-remove-action);
}

.jmix-font-icon-generic-filter-clear-values-action:before {
    content: var(--jmix-font-icon-generic-filter-clear-values-action);
}

.jmix-font-icon-generic-filter-make-default-action:before {
    content: var(--jmix-font-icon-generic-filter-make-default-action);
}

.jmix-font-icon-generic-filter-add-condition-action:before {
    content: var(--jmix-font-icon-generic-filter-add-condition-action);
}

.jmix-font-icon-create-notification-action:before {
    content: var(--jmix-font-icon-create-notification-action);
}

.jmix-font-icon-interval-field-help:before {
    content: var(--jmix-font-icon-interval-field-help);
}

.jmix-font-icon-combo-button-dropdown:before {
    content: var(--jmix-font-icon-combo-button-dropdown);
}

.jmix-font-icon-pagination-first-page:before {
    content: var(--jmix-font-icon-pagination-first-page);
}

.jmix-font-icon-pagination-previous-page:before {
    content: var(--jmix-font-icon-pagination-previous-page);
}

.jmix-font-icon-pagination-next-page:before {
    content: var(--jmix-font-icon-pagination-next-page);
}

.jmix-font-icon-pagination-last-page:before {
    content: var(--jmix-font-icon-pagination-last-page);
}

.jmix-font-icon-twin-column-select-all:before {
    content: var(--jmix-font-icon-twin-column-select-all);
}

.jmix-font-icon-twin-column-deselect-all:before {
    content: var(--jmix-font-icon-twin-column-deselect-all);
}

.jmix-font-icon-twin-column-select:before {
    content: var(--jmix-font-icon-twin-column-select);
}

.jmix-font-icon-twin-column-deselect:before {
    content: var(--jmix-font-icon-twin-column-deselect);
}

.jmix-font-icon-generic-filter-settings:before {
    content: var(--jmix-font-icon-generic-filter-settings);
}

.jmix-font-icon-generic-filter-condition-remove:before {
    content: var(--jmix-font-icon-generic-filter-condition-remove);
}

.jmix-font-icon-data-grid-header-filter:before {
    content: var(--jmix-font-icon-data-grid-header-filter);
}

.jmix-font-icon-data-grid-header-filter-apply:before {
    content: var(--jmix-font-icon-data-grid-header-filter-apply);
}

.jmix-font-icon-data-grid-header-filter-cancel:before {
    content: var(--jmix-font-icon-data-grid-header-filter-cancel);
}

.jmix-font-icon-data-grid-header-filter-clear:before {
    content: var(--jmix-font-icon-data-grid-header-filter-clear);
}

.jmix-font-icon-search-field-search:before {
    content: var(--jmix-font-icon-search-field-search);
}

.jmix-font-icon-search-field-settings:before {
    content: var(--jmix-font-icon-search-field-settings);
}

.jmix-font-icon-notifications-indicator:before {
    content: var(--jmix-font-icon-notifications-indicator);
}

.jmix-font-icon-notifications-indicator-refresh:before {
    content: var(--jmix-font-icon-notifications-indicator-refresh);
}

.jmix-font-icon-columns-grouper-item-add:before {
    content: var(--jmix-font-icon-columns-grouper-item-add);
}

.jmix-font-icon-columns-grouper-item-remove:before {
    content: var(--jmix-font-icon-columns-grouper-item-remove);
}

.jmix-font-icon-side-panel-layout-closer:before {
    content: var(--jmix-font-icon-side-panel-layout-closer);
}

/* Vaadin icons */

.jmix-font-icon-abacus:before {
    content: var(--jmix-font-icon-abacus);
}

.jmix-font-icon-absolute-position:before {
    content: var(--jmix-font-icon-absolute-position);
}

.jmix-font-icon-academy-cap:before {
    content: var(--jmix-font-icon-academy-cap);
}

.jmix-font-icon-accessibility:before {
    content: var(--jmix-font-icon-accessibility);
}

.jmix-font-icon-accordion-menu:before {
    content: var(--jmix-font-icon-accordion-menu);
}

.jmix-font-icon-add-dock:before {
    content: var(--jmix-font-icon-add-dock);
}

.jmix-font-icon-dock:before {
    content: var(--jmix-font-icon-dock);
}

.jmix-font-icon-adjust:before {
    content: var(--jmix-font-icon-adjust);
}

.jmix-font-icon-contrast:before {
    content: var(--jmix-font-icon-contrast);
}

.jmix-font-icon-adobe-flash:before {
    content: var(--jmix-font-icon-adobe-flash);
}

.jmix-font-icon-airplane:before {
    content: var(--jmix-font-icon-airplane);
}

.jmix-font-icon-alarm:before {
    content: var(--jmix-font-icon-alarm);
}

.jmix-font-icon-align-center:before {
    content: var(--jmix-font-icon-align-center);
}

.jmix-font-icon-align-justify:before {
    content: var(--jmix-font-icon-align-justify);
}

.jmix-font-icon-align-left:before {
    content: var(--jmix-font-icon-align-left);
}

.jmix-font-icon-align-right:before {
    content: var(--jmix-font-icon-align-right);
}

.jmix-font-icon-alt-a:before {
    content: var(--jmix-font-icon-alt-a);
}

.jmix-font-icon-alt:before {
    content: var(--jmix-font-icon-alt);
}

.jmix-font-icon-ambulance:before {
    content: var(--jmix-font-icon-ambulance);
}

.jmix-font-icon-anchor:before {
    content: var(--jmix-font-icon-anchor);
}

.jmix-font-icon-angle-double-down:before {
    content: var(--jmix-font-icon-angle-double-down);
}

.jmix-font-icon-angle-double-left:before {
    content: var(--jmix-font-icon-angle-double-left);
}

.jmix-font-icon-angle-double-right:before {
    content: var(--jmix-font-icon-angle-double-right);
}

.jmix-font-icon-angle-double-up:before {
    content: var(--jmix-font-icon-angle-double-up);
}

.jmix-font-icon-angle-down:before {
    content: var(--jmix-font-icon-angle-down);
}

.jmix-font-icon-angle-left:before {
    content: var(--jmix-font-icon-angle-left);
}

.jmix-font-icon-angle-right:before {
    content: var(--jmix-font-icon-angle-right);
}

.jmix-font-icon-angle-up:before {
    content: var(--jmix-font-icon-angle-up);
}

.jmix-font-icon-archive:before {
    content: var(--jmix-font-icon-archive);
}

.jmix-font-icon-archives:before {
    content: var(--jmix-font-icon-archives);
}

.jmix-font-icon-area-select:before {
    content: var(--jmix-font-icon-area-select);
}

.jmix-font-icon-arrow-backward:before {
    content: var(--jmix-font-icon-arrow-backward);
}

.jmix-font-icon-arrow-circle-down-o:before {
    content: var(--jmix-font-icon-arrow-circle-down-o);
}

.jmix-font-icon-arrow-circle-down:before {
    content: var(--jmix-font-icon-arrow-circle-down);
}

.jmix-font-icon-arrow-circle-left-o:before {
    content: var(--jmix-font-icon-arrow-circle-left-o);
}

.jmix-font-icon-arrow-circle-left:before {
    content: var(--jmix-font-icon-arrow-circle-left);
}

.jmix-font-icon-arrow-circle-right-o:before {
    content: var(--jmix-font-icon-arrow-circle-right-o);
}

.jmix-font-icon-arrow-circle-right:before {
    content: var(--jmix-font-icon-arrow-circle-right);
}

.jmix-font-icon-arrow-circle-up-o:before {
    content: var(--jmix-font-icon-arrow-circle-up-o);
}

.jmix-font-icon-arrow-circle-up:before {
    content: var(--jmix-font-icon-arrow-circle-up);
}

.jmix-font-icon-arrow-down:before {
    content: var(--jmix-font-icon-arrow-down);
}

.jmix-font-icon-arrow-forward:before {
    content: var(--jmix-font-icon-arrow-forward);
}

.jmix-font-icon-arrow-left:before {
    content: var(--jmix-font-icon-arrow-left);
}

.jmix-font-icon-arrow-long-down:before {
    content: var(--jmix-font-icon-arrow-long-down);
}

.jmix-font-icon-arrow-long-left:before {
    content: var(--jmix-font-icon-arrow-long-left);
}

.jmix-font-icon-arrow-right:before {
    content: var(--jmix-font-icon-arrow-right);
}

.jmix-font-icon-arrow-up:before {
    content: var(--jmix-font-icon-arrow-up);
}

.jmix-font-icon-arrows-cross:before {
    content: var(--jmix-font-icon-arrows-cross);
}

.jmix-font-icon-arrows-long-h:before {
    content: var(--jmix-font-icon-arrows-long-h);
}

.jmix-font-icon-arrows-long-right:before {
    content: var(--jmix-font-icon-arrows-long-right);
}

.jmix-font-icon-arrows-long-up:before {
    content: var(--jmix-font-icon-arrows-long-up);
}

.jmix-font-icon-arrows-long-v:before {
    content: var(--jmix-font-icon-arrows-long-v);
}

.jmix-font-icon-arrows:before {
    content: var(--jmix-font-icon-arrows);
}

.jmix-font-icon-asterisk:before {
    content: var(--jmix-font-icon-asterisk);
}

.jmix-font-icon-at:before {
    content: var(--jmix-font-icon-at);
}

.jmix-font-icon-automation:before {
    content: var(--jmix-font-icon-automation);
}

.jmix-font-icon-backspace-a:before {
    content: var(--jmix-font-icon-backspace-a);
}

.jmix-font-icon-backspace:before {
    content: var(--jmix-font-icon-backspace);
}

.jmix-font-icon-backwards:before {
    content: var(--jmix-font-icon-backwards);
}

.jmix-font-icon-ban:before {
    content: var(--jmix-font-icon-ban);
}

.jmix-font-icon-bar-chart-h:before {
    content: var(--jmix-font-icon-bar-chart-h);
}

.jmix-font-icon-bar-chart-v:before {
    content: var(--jmix-font-icon-bar-chart-v);
}

.jmix-font-icon-bar-chart:before {
    content: var(--jmix-font-icon-bar-chart);
}

.jmix-font-icon-barcode:before {
    content: var(--jmix-font-icon-barcode);
}

.jmix-font-icon-bed:before {
    content: var(--jmix-font-icon-bed);
}

.jmix-font-icon-bell-o:before {
    content: var(--jmix-font-icon-bell-o);
}

.jmix-font-icon-bell-slash-o:before {
    content: var(--jmix-font-icon-bell-slash-o);
}

.jmix-font-icon-bell-slash:before {
    content: var(--jmix-font-icon-bell-slash);
}

.jmix-font-icon-bell:before {
    content: var(--jmix-font-icon-bell);
}

.jmix-font-icon-boat:before {
    content: var(--jmix-font-icon-boat);
}

.jmix-font-icon-bold:before {
    content: var(--jmix-font-icon-bold);
}

.jmix-font-icon-bolt:before {
    content: var(--jmix-font-icon-bolt);
}

.jmix-font-icon-bomb:before {
    content: var(--jmix-font-icon-bomb);
}

.jmix-font-icon-book-dollar:before {
    content: var(--jmix-font-icon-book-dollar);
}

.jmix-font-icon-book-percent:before {
    content: var(--jmix-font-icon-book-percent);
}

.jmix-font-icon-book:before {
    content: var(--jmix-font-icon-book);
}

.jmix-font-icon-bookmark-o:before {
    content: var(--jmix-font-icon-bookmark-o);
}

.jmix-font-icon-bookmark:before {
    content: var(--jmix-font-icon-bookmark);
}

.jmix-font-icon-branch:before {
    content: var(--jmix-font-icon-branch);
}

.jmix-font-icon-briefcase:before {
    content: var(--jmix-font-icon-briefcase);
}

.jmix-font-icon-browser:before {
    content: var(--jmix-font-icon-browser);
}

.jmix-font-icon-bug-o:before {
    content: var(--jmix-font-icon-bug-o);
}

.jmix-font-icon-bug:before {
    content: var(--jmix-font-icon-bug);
}

.jmix-font-icon-building-o:before {
    content: var(--jmix-font-icon-building-o);
}

.jmix-font-icon-building:before {
    content: var(--jmix-font-icon-building);
}

.jmix-font-icon-bullets:before {
    content: var(--jmix-font-icon-bullets);
}

.jmix-font-icon-bullseye:before {
    content: var(--jmix-font-icon-bullseye);
}

.jmix-font-icon-bus:before {
    content: var(--jmix-font-icon-bus);
}

.jmix-font-icon-button:before {
    content: var(--jmix-font-icon-button);
}

.jmix-font-icon-calc-book:before {
    content: var(--jmix-font-icon-calc-book);
}

.jmix-font-icon-calc:before {
    content: var(--jmix-font-icon-calc);
}

.jmix-font-icon-calendar-briefcase:before {
    content: var(--jmix-font-icon-calendar-briefcase);
}

.jmix-font-icon-calendar-clock:before {
    content: var(--jmix-font-icon-calendar-clock);
}

.jmix-font-icon-calendar-envelope:before {
    content: var(--jmix-font-icon-calendar-envelope);
}

.jmix-font-icon-calendar-o:before {
    content: var(--jmix-font-icon-calendar-o);
}

.jmix-font-icon-calendar-user:before {
    content: var(--jmix-font-icon-calendar-user);
}

.jmix-font-icon-calendar:before {
    content: var(--jmix-font-icon-calendar);
}

.jmix-font-icon-camera:before {
    content: var(--jmix-font-icon-camera);
}

.jmix-font-icon-car:before {
    content: var(--jmix-font-icon-car);
}

.jmix-font-icon-caret-down:before {
    content: var(--jmix-font-icon-caret-down);
}

.jmix-font-icon-caret-left:before {
    content: var(--jmix-font-icon-caret-left);
}

.jmix-font-icon-caret-right:before {
    content: var(--jmix-font-icon-caret-right);
}

.jmix-font-icon-caret-square-down-o:before {
    content: var(--jmix-font-icon-caret-square-down-o);
}

.jmix-font-icon-caret-square-down:before {
    content: var(--jmix-font-icon-caret-square-down);
}

.jmix-font-icon-caret-square-left-o:before {
    content: var(--jmix-font-icon-caret-square-left-o);
}

.jmix-font-icon-caret-square-left:before {
    content: var(--jmix-font-icon-caret-square-left);
}

.jmix-font-icon-caret-square-right-o:before {
    content: var(--jmix-font-icon-caret-square-right-o);
}

.jmix-font-icon-caret-square-right:before {
    content: var(--jmix-font-icon-caret-square-right);
}

.jmix-font-icon-caret-square-up-o:before {
    content: var(--jmix-font-icon-caret-square-up-o);
}

.jmix-font-icon-caret-square-up:before {
    content: var(--jmix-font-icon-caret-square-up);
}

.jmix-font-icon-caret-up:before {
    content: var(--jmix-font-icon-caret-up);
}

.jmix-font-icon-cart-o:before {
    content: var(--jmix-font-icon-cart-o);
}

.jmix-font-icon-cart:before {
    content: var(--jmix-font-icon-cart);
}

.jmix-font-icon-cash:before {
    content: var(--jmix-font-icon-cash);
}

.jmix-font-icon-chart-3d:before {
    content: var(--jmix-font-icon-chart-3d);
}

.jmix-font-icon-chart-grid:before {
    content: var(--jmix-font-icon-chart-grid);
}

.jmix-font-icon-chart-line:before {
    content: var(--jmix-font-icon-chart-line);
}

.jmix-font-icon-chart-timeline:before {
    content: var(--jmix-font-icon-chart-timeline);
}

.jmix-font-icon-chart:before {
    content: var(--jmix-font-icon-chart);
}

.jmix-font-icon-chat:before {
    content: var(--jmix-font-icon-chat);
}

.jmix-font-icon-check-circle-o:before {
    content: var(--jmix-font-icon-check-circle-o);
}

.jmix-font-icon-check-circle:before {
    content: var(--jmix-font-icon-check-circle);
}

.jmix-font-icon-check-square-o:before {
    content: var(--jmix-font-icon-check-square-o);
}

.jmix-font-icon-check-square:before {
    content: var(--jmix-font-icon-check-square);
}

.jmix-font-icon-check:before {
    content: var(--jmix-font-icon-check);
}

.jmix-font-icon-chevron-circle-down-o:before {
    content: var(--jmix-font-icon-chevron-circle-down-o);
}

.jmix-font-icon-chevron-circle-down:before {
    content: var(--jmix-font-icon-chevron-circle-down);
}

.jmix-font-icon-chevron-circle-left-o:before {
    content: var(--jmix-font-icon-chevron-circle-left-o);
}

.jmix-font-icon-chevron-circle-left:before {
    content: var(--jmix-font-icon-chevron-circle-left);
}

.jmix-font-icon-chevron-circle-right-o:before {
    content: var(--jmix-font-icon-chevron-circle-right-o);
}

.jmix-font-icon-chevron-circle-right:before {
    content: var(--jmix-font-icon-chevron-circle-right);
}

.jmix-font-icon-chevron-circle-up-o:before {
    content: var(--jmix-font-icon-chevron-circle-up-o);
}

.jmix-font-icon-chevron-circle-up:before {
    content: var(--jmix-font-icon-chevron-circle-up);
}

.jmix-font-icon-chevron-down-small:before {
    content: var(--jmix-font-icon-chevron-down-small);
}

.jmix-font-icon-chevron-down:before {
    content: var(--jmix-font-icon-chevron-down);
}

.jmix-font-icon-chevron-left-small:before {
    content: var(--jmix-font-icon-chevron-left-small);
}

.jmix-font-icon-chevron-left:before {
    content: var(--jmix-font-icon-chevron-left);
}

.jmix-font-icon-chevron-right-small:before {
    content: var(--jmix-font-icon-chevron-right-small);
}

.jmix-font-icon-chevron-right:before {
    content: var(--jmix-font-icon-chevron-right);
}

.jmix-font-icon-chevron-up-small:before {
    content: var(--jmix-font-icon-chevron-up-small);
}

.jmix-font-icon-chevron-up:before {
    content: var(--jmix-font-icon-chevron-up);
}

.jmix-font-icon-child:before {
    content: var(--jmix-font-icon-child);
}

.jmix-font-icon-circle-thin:before {
    content: var(--jmix-font-icon-circle-thin);
}

.jmix-font-icon-circle:before {
    content: var(--jmix-font-icon-circle);
}

.jmix-font-icon-clipboard-check:before {
    content: var(--jmix-font-icon-clipboard-check);
}

.jmix-font-icon-clipboard-cross:before {
    content: var(--jmix-font-icon-clipboard-cross);
}

.jmix-font-icon-clipboard-heart:before {
    content: var(--jmix-font-icon-clipboard-heart);
}

.jmix-font-icon-clipboard-pulse:before {
    content: var(--jmix-font-icon-clipboard-pulse);
}

.jmix-font-icon-clipboard-text:before {
    content: var(--jmix-font-icon-clipboard-text);
}

.jmix-font-icon-clipboard-user:before {
    content: var(--jmix-font-icon-clipboard-user);
}

.jmix-font-icon-clipboard:before {
    content: var(--jmix-font-icon-clipboard);
}

.jmix-font-icon-clock:before {
    content: var(--jmix-font-icon-clock);
}

.jmix-font-icon-close-big:before {
    content: var(--jmix-font-icon-close-big);
}

.jmix-font-icon-close-circle-o:before {
    content: var(--jmix-font-icon-close-circle-o);
}

.jmix-font-icon-close-circle:before {
    content: var(--jmix-font-icon-close-circle);
}

.jmix-font-icon-close-small:before {
    content: var(--jmix-font-icon-close-small);
}

.jmix-font-icon-close:before {
    content: var(--jmix-font-icon-close);
}

.jmix-font-icon-cloud-download-o:before {
    content: var(--jmix-font-icon-cloud-download-o);
}

.jmix-font-icon-cloud-download:before {
    content: var(--jmix-font-icon-cloud-download);
}

.jmix-font-icon-cloud-o:before {
    content: var(--jmix-font-icon-cloud-o);
}

.jmix-font-icon-cloud-upload-o:before {
    content: var(--jmix-font-icon-cloud-upload-o);
}

.jmix-font-icon-cloud-upload:before {
    content: var(--jmix-font-icon-cloud-upload);
}

.jmix-font-icon-cloud:before {
    content: var(--jmix-font-icon-cloud);
}

.jmix-font-icon-cluster:before {
    content: var(--jmix-font-icon-cluster);
}

.jmix-font-icon-code:before {
    content: var(--jmix-font-icon-code);
}

.jmix-font-icon-coffee:before {
    content: var(--jmix-font-icon-coffee);
}

.jmix-font-icon-cog-o:before {
    content: var(--jmix-font-icon-cog-o);
}

.jmix-font-icon-cog:before {
    content: var(--jmix-font-icon-cog);
}

.jmix-font-icon-cogs:before {
    content: var(--jmix-font-icon-cogs);
}

.jmix-font-icon-coin-piles:before {
    content: var(--jmix-font-icon-coin-piles);
}

.jmix-font-icon-coins:before {
    content: var(--jmix-font-icon-coins);
}

.jmix-font-icon-combobox:before {
    content: var(--jmix-font-icon-combobox);
}

.jmix-font-icon-command:before {
    content: var(--jmix-font-icon-command);
}

.jmix-font-icon-comment-ellipsis-o:before {
    content: var(--jmix-font-icon-comment-ellipsis-o);
}

.jmix-font-icon-comment-ellipsis:before {
    content: var(--jmix-font-icon-comment-ellipsis);
}

.jmix-font-icon-comment-o:before {
    content: var(--jmix-font-icon-comment-o);
}

.jmix-font-icon-comment:before {
    content: var(--jmix-font-icon-comment);
}

.jmix-font-icon-comments-o:before {
    content: var(--jmix-font-icon-comments-o);
}

.jmix-font-icon-comments:before {
    content: var(--jmix-font-icon-comments);
}

.jmix-font-icon-compass:before {
    content: var(--jmix-font-icon-compass);
}

.jmix-font-icon-compile:before {
    content: var(--jmix-font-icon-compile);
}

.jmix-font-icon-compress-square:before {
    content: var(--jmix-font-icon-compress-square);
}

.jmix-font-icon-compress:before {
    content: var(--jmix-font-icon-compress);
}

.jmix-font-icon-connect-o:before {
    content: var(--jmix-font-icon-connect-o);
}

.jmix-font-icon-connect:before {
    content: var(--jmix-font-icon-connect);
}

.jmix-font-icon-controller:before {
    content: var(--jmix-font-icon-controller);
}

.jmix-font-icon-copy-o:before {
    content: var(--jmix-font-icon-copy-o);
}

.jmix-font-icon-copy:before {
    content: var(--jmix-font-icon-copy);
}

.jmix-font-icon-copyright:before {
    content: var(--jmix-font-icon-copyright);
}

.jmix-font-icon-corner-lower-left:before {
    content: var(--jmix-font-icon-corner-lower-left);
}

.jmix-font-icon-corner-lower-right:before {
    content: var(--jmix-font-icon-corner-lower-right);
}

.jmix-font-icon-corner-upper-left:before {
    content: var(--jmix-font-icon-corner-upper-left);
}

.jmix-font-icon-corner-upper-right:before {
    content: var(--jmix-font-icon-corner-upper-right);
}

.jmix-font-icon-credit-card:before {
    content: var(--jmix-font-icon-credit-card);
}

.jmix-font-icon-crop:before {
    content: var(--jmix-font-icon-crop);
}

.jmix-font-icon-cross-cutlery:before {
    content: var(--jmix-font-icon-cross-cutlery);
}

.jmix-font-icon-crosshairs:before {
    content: var(--jmix-font-icon-crosshairs);
}

.jmix-font-icon-css:before {
    content: var(--jmix-font-icon-css);
}

.jmix-font-icon-ctrl-a:before {
    content: var(--jmix-font-icon-ctrl-a);
}

.jmix-font-icon-ctrl:before {
    content: var(--jmix-font-icon-ctrl);
}

.jmix-font-icon-cube:before {
    content: var(--jmix-font-icon-cube);
}

.jmix-font-icon-cubes:before {
    content: var(--jmix-font-icon-cubes);
}

.jmix-font-icon-curly-brackets:before {
    content: var(--jmix-font-icon-curly-brackets);
}

.jmix-font-icon-cursor-o:before {
    content: var(--jmix-font-icon-cursor-o);
}

.jmix-font-icon-cursor:before {
    content: var(--jmix-font-icon-cursor);
}

.jmix-font-icon-cutlery:before {
    content: var(--jmix-font-icon-cutlery);
}

.jmix-font-icon-dashboard:before {
    content: var(--jmix-font-icon-dashboard);
}

.jmix-font-icon-database:before {
    content: var(--jmix-font-icon-database);
}

.jmix-font-icon-date-input:before {
    content: var(--jmix-font-icon-date-input);
}

.jmix-font-icon-deindent:before {
    content: var(--jmix-font-icon-deindent);
}

.jmix-font-icon-del-a:before {
    content: var(--jmix-font-icon-del-a);
}

.jmix-font-icon-del:before {
    content: var(--jmix-font-icon-del);
}

.jmix-font-icon-dental-chair:before {
    content: var(--jmix-font-icon-dental-chair);
}

.jmix-font-icon-desktop:before {
    content: var(--jmix-font-icon-desktop);
}

.jmix-font-icon-diamond-o:before {
    content: var(--jmix-font-icon-diamond-o);
}

.jmix-font-icon-diamond:before {
    content: var(--jmix-font-icon-diamond);
}

.jmix-font-icon-diploma-scroll:before {
    content: var(--jmix-font-icon-diploma-scroll);
}

.jmix-font-icon-diploma:before {
    content: var(--jmix-font-icon-diploma);
}

.jmix-font-icon-disc:before {
    content: var(--jmix-font-icon-disc);
}

.jmix-font-icon-doctor-briefcase:before {
    content: var(--jmix-font-icon-doctor-briefcase);
}

.jmix-font-icon-doctor:before {
    content: var(--jmix-font-icon-doctor);
}

.jmix-font-icon-dollar:before {
    content: var(--jmix-font-icon-dollar);
}

.jmix-font-icon-dot-circle:before {
    content: var(--jmix-font-icon-dot-circle);
}

.jmix-font-icon-download-alt:before {
    content: var(--jmix-font-icon-download-alt);
}

.jmix-font-icon-download:before {
    content: var(--jmix-font-icon-download);
}

.jmix-font-icon-drop:before {
    content: var(--jmix-font-icon-drop);
}

.jmix-font-icon-edit:before {
    content: var(--jmix-font-icon-edit);
}

.jmix-font-icon-eject:before {
    content: var(--jmix-font-icon-eject);
}

.jmix-font-icon-elastic:before {
    content: var(--jmix-font-icon-elastic);
}

.jmix-font-icon-ellipsis-circle-o:before {
    content: var(--jmix-font-icon-ellipsis-circle-o);
}

.jmix-font-icon-ellipsis-circle:before {
    content: var(--jmix-font-icon-ellipsis-circle);
}

.jmix-font-icon-ellipsis-dots-h:before {
    content: var(--jmix-font-icon-ellipsis-dots-h);
}

.jmix-font-icon-ellipsis-dots-v:before {
    content: var(--jmix-font-icon-ellipsis-dots-v);
}

.jmix-font-icon-ellipsis-h:before {
    content: var(--jmix-font-icon-ellipsis-h);
}

.jmix-font-icon-ellipsis-v:before {
    content: var(--jmix-font-icon-ellipsis-v);
}

.jmix-font-icon-enter-arrow:before {
    content: var(--jmix-font-icon-enter-arrow);
}

.jmix-font-icon-enter:before {
    content: var(--jmix-font-icon-enter);
}

.jmix-font-icon-envelope-o:before {
    content: var(--jmix-font-icon-envelope-o);
}

.jmix-font-icon-envelope-open-o:before {
    content: var(--jmix-font-icon-envelope-open-o);
}

.jmix-font-icon-envelope-open:before {
    content: var(--jmix-font-icon-envelope-open);
}

.jmix-font-icon-envelope:before {
    content: var(--jmix-font-icon-envelope);
}

.jmix-font-icon-envelopes-o:before {
    content: var(--jmix-font-icon-envelopes-o);
}

.jmix-font-icon-envelopes:before {
    content: var(--jmix-font-icon-envelopes);
}

.jmix-font-icon-eraser:before {
    content: var(--jmix-font-icon-eraser);
}

.jmix-font-icon-esc-a:before {
    content: var(--jmix-font-icon-esc-a);
}

.jmix-font-icon-esc:before {
    content: var(--jmix-font-icon-esc);
}

.jmix-font-icon-euro:before {
    content: var(--jmix-font-icon-euro);
}

.jmix-font-icon-exchange:before {
    content: var(--jmix-font-icon-exchange);
}

.jmix-font-icon-exclamation-circle-o:before {
    content: var(--jmix-font-icon-exclamation-circle-o);
}

.jmix-font-icon-exclamation-circle:before {
    content: var(--jmix-font-icon-exclamation-circle);
}

.jmix-font-icon-exclamation:before {
    content: var(--jmix-font-icon-exclamation);
}

.jmix-font-icon-exit-o:before {
    content: var(--jmix-font-icon-exit-o);
}

.jmix-font-icon-exit:before {
    content: var(--jmix-font-icon-exit);
}

.jmix-font-icon-expand-full:before {
    content: var(--jmix-font-icon-expand-full);
}

.jmix-font-icon-expand-square:before {
    content: var(--jmix-font-icon-expand-square);
}

.jmix-font-icon-expand:before {
    content: var(--jmix-font-icon-expand);
}

.jmix-font-icon-external-browser:before {
    content: var(--jmix-font-icon-external-browser);
}

.jmix-font-icon-external-link:before {
    content: var(--jmix-font-icon-external-link);
}

.jmix-font-icon-eye-slash:before {
    content: var(--jmix-font-icon-eye-slash);
}

.jmix-font-icon-eye:before {
    content: var(--jmix-font-icon-eye);
}

.jmix-font-icon-eyedropper:before {
    content: var(--jmix-font-icon-eyedropper);
}

.jmix-font-icon-facebook-square:before {
    content: var(--jmix-font-icon-facebook-square);
}

.jmix-font-icon-facebook:before {
    content: var(--jmix-font-icon-facebook);
}

.jmix-font-icon-factory:before {
    content: var(--jmix-font-icon-factory);
}

.jmix-font-icon-family:before {
    content: var(--jmix-font-icon-family);
}

.jmix-font-icon-fast-backward:before {
    content: var(--jmix-font-icon-fast-backward);
}

.jmix-font-icon-fast-forward:before {
    content: var(--jmix-font-icon-fast-forward);
}

.jmix-font-icon-female:before {
    content: var(--jmix-font-icon-female);
}

.jmix-font-icon-file-add:before {
    content: var(--jmix-font-icon-file-add);
}

.jmix-font-icon-file-code:before {
    content: var(--jmix-font-icon-file-code);
}

.jmix-font-icon-file-font:before {
    content: var(--jmix-font-icon-file-font);
}

.jmix-font-icon-file-movie:before {
    content: var(--jmix-font-icon-file-movie);
}

.jmix-font-icon-file-o:before {
    content: var(--jmix-font-icon-file-o);
}

.jmix-font-icon-file-picture:before {
    content: var(--jmix-font-icon-file-picture);
}

.jmix-font-icon-file-presentation:before {
    content: var(--jmix-font-icon-file-presentation);
}

.jmix-font-icon-file-process:before {
    content: var(--jmix-font-icon-file-process);
}

.jmix-font-icon-file-refresh:before {
    content: var(--jmix-font-icon-file-refresh);
}

.jmix-font-icon-file-remove:before {
    content: var(--jmix-font-icon-file-remove);
}

.jmix-font-icon-file-search:before {
    content: var(--jmix-font-icon-file-search);
}

.jmix-font-icon-file-sound:before {
    content: var(--jmix-font-icon-file-sound);
}

.jmix-font-icon-file-start:before {
    content: var(--jmix-font-icon-file-start);
}

.jmix-font-icon-file-table:before {
    content: var(--jmix-font-icon-file-table);
}

.jmix-font-icon-file-text-o:before {
    content: var(--jmix-font-icon-file-text-o);
}

.jmix-font-icon-file-text:before {
    content: var(--jmix-font-icon-file-text);
}

.jmix-font-icon-file-tree-small:before {
    content: var(--jmix-font-icon-file-tree-small);
}

.jmix-font-icon-file-tree-sub:before {
    content: var(--jmix-font-icon-file-tree-sub);
}

.jmix-font-icon-file-tree:before {
    content: var(--jmix-font-icon-file-tree);
}

.jmix-font-icon-file-zip:before {
    content: var(--jmix-font-icon-file-zip);
}

.jmix-font-icon-file:before {
    content: var(--jmix-font-icon-file);
}

.jmix-font-icon-fill:before {
    content: var(--jmix-font-icon-fill);
}

.jmix-font-icon-film:before {
    content: var(--jmix-font-icon-film);
}

.jmix-font-icon-filter:before {
    content: var(--jmix-font-icon-filter);
}

.jmix-font-icon-fire:before {
    content: var(--jmix-font-icon-fire);
}

.jmix-font-icon-flag-checkered:before {
    content: var(--jmix-font-icon-flag-checkered);
}

.jmix-font-icon-flag-o:before {
    content: var(--jmix-font-icon-flag-o);
}

.jmix-font-icon-flag:before {
    content: var(--jmix-font-icon-flag);
}

.jmix-font-icon-flash:before {
    content: var(--jmix-font-icon-flash);
}

.jmix-font-icon-flask:before {
    content: var(--jmix-font-icon-flask);
}

.jmix-font-icon-flight-landing:before {
    content: var(--jmix-font-icon-flight-landing);
}

.jmix-font-icon-flight-takeoff:before {
    content: var(--jmix-font-icon-flight-takeoff);
}

.jmix-font-icon-flip-h:before {
    content: var(--jmix-font-icon-flip-h);
}

.jmix-font-icon-flip-v:before {
    content: var(--jmix-font-icon-flip-v);
}

.jmix-font-icon-folder-add:before {
    content: var(--jmix-font-icon-folder-add);
}

.jmix-font-icon-folder-o:before {
    content: var(--jmix-font-icon-folder-o);
}

.jmix-font-icon-folder-open-o:before {
    content: var(--jmix-font-icon-folder-open-o);
}

.jmix-font-icon-folder-open:before {
    content: var(--jmix-font-icon-folder-open);
}

.jmix-font-icon-folder-remove:before {
    content: var(--jmix-font-icon-folder-remove);
}

.jmix-font-icon-folder-search:before {
    content: var(--jmix-font-icon-folder-search);
}

.jmix-font-icon-folder:before {
    content: var(--jmix-font-icon-folder);
}

.jmix-font-icon-font:before {
    content: var(--jmix-font-icon-font);
}

.jmix-font-icon-forklift:before {
    content: var(--jmix-font-icon-forklift);
}

.jmix-font-icon-form:before {
    content: var(--jmix-font-icon-form);
}

.jmix-font-icon-forward:before {
    content: var(--jmix-font-icon-forward);
}

.jmix-font-icon-frown-o:before {
    content: var(--jmix-font-icon-frown-o);
}

.jmix-font-icon-frown:before {
    content: var(--jmix-font-icon-frown);
}

.jmix-font-icon-function:before {
    content: var(--jmix-font-icon-function);
}

.jmix-font-icon-funnel:before {
    content: var(--jmix-font-icon-funnel);
}

.jmix-font-icon-gamepad:before {
    content: var(--jmix-font-icon-gamepad);
}

.jmix-font-icon-gavel:before {
    content: var(--jmix-font-icon-gavel);
}

.jmix-font-icon-gift:before {
    content: var(--jmix-font-icon-gift);
}

.jmix-font-icon-glass:before {
    content: var(--jmix-font-icon-glass);
}

.jmix-font-icon-glasses:before {
    content: var(--jmix-font-icon-glasses);
}

.jmix-font-icon-globe-wire:before {
    content: var(--jmix-font-icon-globe-wire);
}

.jmix-font-icon-globe:before {
    content: var(--jmix-font-icon-globe);
}

.jmix-font-icon-golf:before {
    content: var(--jmix-font-icon-golf);
}

.jmix-font-icon-google-plus-square:before {
    content: var(--jmix-font-icon-google-plus-square);
}

.jmix-font-icon-google-plus:before {
    content: var(--jmix-font-icon-google-plus);
}

.jmix-font-icon-grab:before {
    content: var(--jmix-font-icon-grab);
}

.jmix-font-icon-grid-bevel:before {
    content: var(--jmix-font-icon-grid-bevel);
}

.jmix-font-icon-grid-big-o:before {
    content: var(--jmix-font-icon-grid-big-o);
}

.jmix-font-icon-grid-big:before {
    content: var(--jmix-font-icon-grid-big);
}

.jmix-font-icon-grid-h:before {
    content: var(--jmix-font-icon-grid-h);
}

.jmix-font-icon-grid-small-o:before {
    content: var(--jmix-font-icon-grid-small-o);
}

.jmix-font-icon-grid-small:before {
    content: var(--jmix-font-icon-grid-small);
}

.jmix-font-icon-grid-v:before {
    content: var(--jmix-font-icon-grid-v);
}

.jmix-font-icon-grid:before {
    content: var(--jmix-font-icon-grid);
}

.jmix-font-icon-group:before {
    content: var(--jmix-font-icon-group);
}

.jmix-font-icon-hammer:before {
    content: var(--jmix-font-icon-hammer);
}

.jmix-font-icon-hand:before {
    content: var(--jmix-font-icon-hand);
}

.jmix-font-icon-handle-corner:before {
    content: var(--jmix-font-icon-handle-corner);
}

.jmix-font-icon-hands-up:before {
    content: var(--jmix-font-icon-hands-up);
}

.jmix-font-icon-handshake:before {
    content: var(--jmix-font-icon-handshake);
}

.jmix-font-icon-harddrive-o:before {
    content: var(--jmix-font-icon-harddrive-o);
}

.jmix-font-icon-harddrive:before {
    content: var(--jmix-font-icon-harddrive);
}

.jmix-font-icon-hash:before {
    content: var(--jmix-font-icon-hash);
}

.jmix-font-icon-header:before {
    content: var(--jmix-font-icon-header);
}

.jmix-font-icon-headphones:before {
    content: var(--jmix-font-icon-headphones);
}

.jmix-font-icon-headset:before {
    content: var(--jmix-font-icon-headset);
}

.jmix-font-icon-health-card:before {
    content: var(--jmix-font-icon-health-card);
}

.jmix-font-icon-heart-o:before {
    content: var(--jmix-font-icon-heart-o);
}

.jmix-font-icon-heart:before {
    content: var(--jmix-font-icon-heart);
}

.jmix-font-icon-home-o:before {
    content: var(--jmix-font-icon-home-o);
}

.jmix-font-icon-home:before {
    content: var(--jmix-font-icon-home);
}

.jmix-font-icon-hospital:before {
    content: var(--jmix-font-icon-hospital);
}

.jmix-font-icon-hourglass-empty:before {
    content: var(--jmix-font-icon-hourglass-empty);
}

.jmix-font-icon-hourglass-end:before {
    content: var(--jmix-font-icon-hourglass-end);
}

.jmix-font-icon-hourglass-start:before {
    content: var(--jmix-font-icon-hourglass-start);
}

.jmix-font-icon-hourglass:before {
    content: var(--jmix-font-icon-hourglass);
}

.jmix-font-icon-inbox:before {
    content: var(--jmix-font-icon-inbox);
}

.jmix-font-icon-indent:before {
    content: var(--jmix-font-icon-indent);
}

.jmix-font-icon-info-circle-o:before {
    content: var(--jmix-font-icon-info-circle-o);
}

.jmix-font-icon-info-circle:before {
    content: var(--jmix-font-icon-info-circle);
}

.jmix-font-icon-info:before {
    content: var(--jmix-font-icon-info);
}

.jmix-font-icon-input:before {
    content: var(--jmix-font-icon-input);
}

.jmix-font-icon-insert:before {
    content: var(--jmix-font-icon-insert);
}

.jmix-font-icon-institution:before {
    content: var(--jmix-font-icon-institution);
}

.jmix-font-icon-invoice:before {
    content: var(--jmix-font-icon-invoice);
}

.jmix-font-icon-italic:before {
    content: var(--jmix-font-icon-italic);
}

.jmix-font-icon-key-o:before {
    content: var(--jmix-font-icon-key-o);
}

.jmix-font-icon-key:before {
    content: var(--jmix-font-icon-key);
}

.jmix-font-icon-keyboard-o:before {
    content: var(--jmix-font-icon-keyboard-o);
}

.jmix-font-icon-keyboard:before {
    content: var(--jmix-font-icon-keyboard);
}

.jmix-font-icon-laptop:before {
    content: var(--jmix-font-icon-laptop);
}

.jmix-font-icon-layout:before {
    content: var(--jmix-font-icon-layout);
}

.jmix-font-icon-level-down-bold:before {
    content: var(--jmix-font-icon-level-down-bold);
}

.jmix-font-icon-level-down:before {
    content: var(--jmix-font-icon-level-down);
}

.jmix-font-icon-level-left-bold:before {
    content: var(--jmix-font-icon-level-left-bold);
}

.jmix-font-icon-level-left:before {
    content: var(--jmix-font-icon-level-left);
}

.jmix-font-icon-level-right-bold:before {
    content: var(--jmix-font-icon-level-right-bold);
}

.jmix-font-icon-level-right:before {
    content: var(--jmix-font-icon-level-right);
}

.jmix-font-icon-level-up-bold:before {
    content: var(--jmix-font-icon-level-up-bold);
}

.jmix-font-icon-level-up:before {
    content: var(--jmix-font-icon-level-up);
}

.jmix-font-icon-lifebuoy:before {
    content: var(--jmix-font-icon-lifebuoy);
}

.jmix-font-icon-lightbulb:before {
    content: var(--jmix-font-icon-lightbulb);
}

.jmix-font-icon-line-bar-chart:before {
    content: var(--jmix-font-icon-line-bar-chart);
}

.jmix-font-icon-line-chart:before {
    content: var(--jmix-font-icon-line-chart);
}

.jmix-font-icon-line-h:before {
    content: var(--jmix-font-icon-line-h);
}

.jmix-font-icon-line-v:before {
    content: var(--jmix-font-icon-line-v);
}

.jmix-font-icon-lines-list:before {
    content: var(--jmix-font-icon-lines-list);
}

.jmix-font-icon-lines:before {
    content: var(--jmix-font-icon-lines);
}

.jmix-font-icon-link:before {
    content: var(--jmix-font-icon-link);
}

.jmix-font-icon-list-ol:before {
    content: var(--jmix-font-icon-list-ol);
}

.jmix-font-icon-list-select:before {
    content: var(--jmix-font-icon-list-select);
}

.jmix-font-icon-list-ul:before {
    content: var(--jmix-font-icon-list-ul);
}

.jmix-font-icon-list:before {
    content: var(--jmix-font-icon-list);
}

.jmix-font-icon-location-arrow-circle-o:before {
    content: var(--jmix-font-icon-location-arrow-circle-o);
}

.jmix-font-icon-location-arrow-circle:before {
    content: var(--jmix-font-icon-location-arrow-circle);
}

.jmix-font-icon-location-arrow:before {
    content: var(--jmix-font-icon-location-arrow);
}

.jmix-font-icon-lock:before {
    content: var(--jmix-font-icon-lock);
}

.jmix-font-icon-magic:before {
    content: var(--jmix-font-icon-magic);
}

.jmix-font-icon-magnet:before {
    content: var(--jmix-font-icon-magnet);
}

.jmix-font-icon-mailbox:before {
    content: var(--jmix-font-icon-mailbox);
}

.jmix-font-icon-male:before {
    content: var(--jmix-font-icon-male);
}

.jmix-font-icon-map-marker:before {
    content: var(--jmix-font-icon-map-marker);
}

.jmix-font-icon-margin-bottom:before {
    content: var(--jmix-font-icon-margin-bottom);
}

.jmix-font-icon-margin-left:before {
    content: var(--jmix-font-icon-margin-left);
}

.jmix-font-icon-margin-right:before {
    content: var(--jmix-font-icon-margin-right);
}

.jmix-font-icon-margin-top:before {
    content: var(--jmix-font-icon-margin-top);
}

.jmix-font-icon-margin:before {
    content: var(--jmix-font-icon-margin);
}

.jmix-font-icon-medal:before {
    content: var(--jmix-font-icon-medal);
}

.jmix-font-icon-megaphone:before {
    content: var(--jmix-font-icon-megaphone);
}

.jmix-font-icon-meh-o:before {
    content: var(--jmix-font-icon-meh-o);
}

.jmix-font-icon-meh:before {
    content: var(--jmix-font-icon-meh);
}

.jmix-font-icon-menu:before {
    content: var(--jmix-font-icon-menu);
}

.jmix-font-icon-microphone:before {
    content: var(--jmix-font-icon-microphone);
}

.jmix-font-icon-minus-circle-o:before {
    content: var(--jmix-font-icon-minus-circle-o);
}

.jmix-font-icon-minus-circle:before {
    content: var(--jmix-font-icon-minus-circle);
}

.jmix-font-icon-minus-square-o:before {
    content: var(--jmix-font-icon-minus-square-o);
}

.jmix-font-icon-minus-square:before {
    content: var(--jmix-font-icon-minus-square);
}

.jmix-font-icon-minus:before {
    content: var(--jmix-font-icon-minus);
}

.jmix-font-icon-mobile-browser:before {
    content: var(--jmix-font-icon-mobile-browser);
}

.jmix-font-icon-mobile-retro:before {
    content: var(--jmix-font-icon-mobile-retro);
}

.jmix-font-icon-mobile:before {
    content: var(--jmix-font-icon-mobile);
}

.jmix-font-icon-modal-list:before {
    content: var(--jmix-font-icon-modal-list);
}

.jmix-font-icon-modal:before {
    content: var(--jmix-font-icon-modal);
}

.jmix-font-icon-money-deposit:before {
    content: var(--jmix-font-icon-money-deposit);
}

.jmix-font-icon-money-exchange:before {
    content: var(--jmix-font-icon-money-exchange);
}

.jmix-font-icon-money-withdraw:before {
    content: var(--jmix-font-icon-money-withdraw);
}

.jmix-font-icon-money:before {
    content: var(--jmix-font-icon-money);
}

.jmix-font-icon-moon-o:before {
    content: var(--jmix-font-icon-moon-o);
}

.jmix-font-icon-moon:before {
    content: var(--jmix-font-icon-moon);
}

.jmix-font-icon-morning:before {
    content: var(--jmix-font-icon-morning);
}

.jmix-font-icon-movie:before {
    content: var(--jmix-font-icon-movie);
}

.jmix-font-icon-music:before {
    content: var(--jmix-font-icon-music);
}

.jmix-font-icon-mute:before {
    content: var(--jmix-font-icon-mute);
}

.jmix-font-icon-native-button:before {
    content: var(--jmix-font-icon-native-button);
}

.jmix-font-icon-newspaper:before {
    content: var(--jmix-font-icon-newspaper);
}

.jmix-font-icon-notebook:before {
    content: var(--jmix-font-icon-notebook);
}

.jmix-font-icon-nurse:before {
    content: var(--jmix-font-icon-nurse);
}

.jmix-font-icon-office:before {
    content: var(--jmix-font-icon-office);
}

.jmix-font-icon-open-book:before {
    content: var(--jmix-font-icon-open-book);
}

.jmix-font-icon-option-a:before {
    content: var(--jmix-font-icon-option-a);
}

.jmix-font-icon-option:before {
    content: var(--jmix-font-icon-option);
}

.jmix-font-icon-options:before {
    content: var(--jmix-font-icon-options);
}

.jmix-font-icon-orientation:before {
    content: var(--jmix-font-icon-orientation);
}

.jmix-font-icon-outdent:before {
    content: var(--jmix-font-icon-outdent);
}

.jmix-font-icon-out:before {
    content: var(--jmix-font-icon-out);
}

.jmix-font-icon-outbox:before {
    content: var(--jmix-font-icon-outbox);
}

.jmix-font-icon-package:before {
    content: var(--jmix-font-icon-package);
}

.jmix-font-icon-padding-bottom:before {
    content: var(--jmix-font-icon-padding-bottom);
}

.jmix-font-icon-padding-left:before {
    content: var(--jmix-font-icon-padding-left);
}

.jmix-font-icon-padding-right:before {
    content: var(--jmix-font-icon-padding-right);
}

.jmix-font-icon-padding-top:before {
    content: var(--jmix-font-icon-padding-top);
}

.jmix-font-icon-padding:before {
    content: var(--jmix-font-icon-padding);
}

.jmix-font-icon-paint-roll:before {
    content: var(--jmix-font-icon-paint-roll);
}

.jmix-font-icon-paintbrush:before {
    content: var(--jmix-font-icon-paintbrush);
}

.jmix-font-icon-palette:before {
    content: var(--jmix-font-icon-palette);
}

.jmix-font-icon-panel:before {
    content: var(--jmix-font-icon-panel);
}

.jmix-font-icon-paperclip:before {
    content: var(--jmix-font-icon-paperclip);
}

.jmix-font-icon-paperplane-o:before {
    content: var(--jmix-font-icon-paperplane-o);
}

.jmix-font-icon-paperplane:before {
    content: var(--jmix-font-icon-paperplane);
}

.jmix-font-icon-paragraph:before {
    content: var(--jmix-font-icon-paragraph);
}

.jmix-font-icon-password:before {
    content: var(--jmix-font-icon-password);
}

.jmix-font-icon-paste:before {
    content: var(--jmix-font-icon-paste);
}

.jmix-font-icon-pause:before {
    content: var(--jmix-font-icon-pause);
}

.jmix-font-icon-pencil:before {
    content: var(--jmix-font-icon-pencil);
}

.jmix-font-icon-person:before {
    content: var(--jmix-font-icon-person);
}

.jmix-font-icon-phone-landline:before {
    content: var(--jmix-font-icon-phone-landline);
}

.jmix-font-icon-phone:before {
    content: var(--jmix-font-icon-phone);
}

.jmix-font-icon-picture:before {
    content: var(--jmix-font-icon-picture);
}

.jmix-font-icon-pie-bar-chart:before {
    content: var(--jmix-font-icon-pie-bar-chart);
}

.jmix-font-icon-pie-chart:before {
    content: var(--jmix-font-icon-pie-chart);
}

.jmix-font-icon-piggy-bank-coin:before {
    content: var(--jmix-font-icon-piggy-bank-coin);
}

.jmix-font-icon-piggy-bank:before {
    content: var(--jmix-font-icon-piggy-bank);
}

.jmix-font-icon-pill:before {
    content: var(--jmix-font-icon-pill);
}

.jmix-font-icon-pills:before {
    content: var(--jmix-font-icon-pills);
}

.jmix-font-icon-pin-post:before {
    content: var(--jmix-font-icon-pin-post);
}

.jmix-font-icon-pin:before {
    content: var(--jmix-font-icon-pin);
}

.jmix-font-icon-play-circle-o:before {
    content: var(--jmix-font-icon-play-circle-o);
}

.jmix-font-icon-play-circle:before {
    content: var(--jmix-font-icon-play-circle);
}

.jmix-font-icon-play:before {
    content: var(--jmix-font-icon-play);
}

.jmix-font-icon-plug:before {
    content: var(--jmix-font-icon-plug);
}

.jmix-font-icon-plus-circle-o:before {
    content: var(--jmix-font-icon-plus-circle-o);
}

.jmix-font-icon-plus-circle:before {
    content: var(--jmix-font-icon-plus-circle);
}

.jmix-font-icon-plus-minus:before {
    content: var(--jmix-font-icon-plus-minus);
}

.jmix-font-icon-plus-square-o:before {
    content: var(--jmix-font-icon-plus-square-o);
}

.jmix-font-icon-plus-square:before {
    content: var(--jmix-font-icon-plus-square);
}

.jmix-font-icon-plus:before {
    content: var(--jmix-font-icon-plus);
}

.jmix-font-icon-pointer:before {
    content: var(--jmix-font-icon-pointer);
}

.jmix-font-icon-power-off:before {
    content: var(--jmix-font-icon-power-off);
}

.jmix-font-icon-presentation:before {
    content: var(--jmix-font-icon-presentation);
}

.jmix-font-icon-print:before {
    content: var(--jmix-font-icon-print);
}

.jmix-font-icon-progressbar:before {
    content: var(--jmix-font-icon-progressbar);
}

.jmix-font-icon-puzzle-piece:before {
    content: var(--jmix-font-icon-puzzle-piece);
}

.jmix-font-icon-pyramid-chart:before {
    content: var(--jmix-font-icon-pyramid-chart);
}

.jmix-font-icon-qrcode:before {
    content: var(--jmix-font-icon-qrcode);
}

.jmix-font-icon-question-circle-o:before {
    content: var(--jmix-font-icon-question-circle-o);
}

.jmix-font-icon-question-circle:before {
    content: var(--jmix-font-icon-question-circle);
}

.jmix-font-icon-question:before {
    content: var(--jmix-font-icon-question);
}

.jmix-font-icon-quote-left:before {
    content: var(--jmix-font-icon-quote-left);
}

.jmix-font-icon-quote-right:before {
    content: var(--jmix-font-icon-quote-right);
}

.jmix-font-icon-random:before {
    content: var(--jmix-font-icon-random);
}

.jmix-font-icon-raster-lower-left:before {
    content: var(--jmix-font-icon-raster-lower-left);
}

.jmix-font-icon-raster:before {
    content: var(--jmix-font-icon-raster);
}

.jmix-font-icon-records:before {
    content: var(--jmix-font-icon-records);
}

.jmix-font-icon-recycle:before {
    content: var(--jmix-font-icon-recycle);
}

.jmix-font-icon-refresh:before {
    content: var(--jmix-font-icon-refresh);
}

.jmix-font-icon-reply-all:before {
    content: var(--jmix-font-icon-reply-all);
}

.jmix-font-icon-reply:before {
    content: var(--jmix-font-icon-reply);
}

.jmix-font-icon-resize-h:before {
    content: var(--jmix-font-icon-resize-h);
}

.jmix-font-icon-resize-v:before {
    content: var(--jmix-font-icon-resize-v);
}

.jmix-font-icon-retweet:before {
    content: var(--jmix-font-icon-retweet);
}

.jmix-font-icon-rhombus:before {
    content: var(--jmix-font-icon-rhombus);
}

.jmix-font-icon-road-branch:before {
    content: var(--jmix-font-icon-road-branch);
}

.jmix-font-icon-road-branches:before {
    content: var(--jmix-font-icon-road-branches);
}

.jmix-font-icon-road-split:before {
    content: var(--jmix-font-icon-road-split);
}

.jmix-font-icon-road:before {
    content: var(--jmix-font-icon-road);
}

.jmix-font-icon-rocket:before {
    content: var(--jmix-font-icon-rocket);
}

.jmix-font-icon-rotate-left:before {
    content: var(--jmix-font-icon-rotate-left);
}

.jmix-font-icon-rotate-right:before {
    content: var(--jmix-font-icon-rotate-right);
}

.jmix-font-icon-rss-square:before {
    content: var(--jmix-font-icon-rss-square);
}

.jmix-font-icon-rss:before {
    content: var(--jmix-font-icon-rss);
}

.jmix-font-icon-safe-lock:before {
    content: var(--jmix-font-icon-safe-lock);
}

.jmix-font-icon-safe:before {
    content: var(--jmix-font-icon-safe);
}

.jmix-font-icon-scale-unbalance:before {
    content: var(--jmix-font-icon-scale-unbalance);
}

.jmix-font-icon-scale:before {
    content: var(--jmix-font-icon-scale);
}

.jmix-font-icon-scatter-chart:before {
    content: var(--jmix-font-icon-scatter-chart);
}

.jmix-font-icon-scissors:before {
    content: var(--jmix-font-icon-scissors);
}

.jmix-font-icon-screwdriver:before {
    content: var(--jmix-font-icon-screwdriver);
}

.jmix-font-icon-search-minus:before {
    content: var(--jmix-font-icon-search-minus);
}

.jmix-font-icon-search-plus:before {
    content: var(--jmix-font-icon-search-plus);
}

.jmix-font-icon-search:before {
    content: var(--jmix-font-icon-search);
}

.jmix-font-icon-select:before {
    content: var(--jmix-font-icon-select);
}

.jmix-font-icon-server:before {
    content: var(--jmix-font-icon-server);
}

.jmix-font-icon-share-square:before {
    content: var(--jmix-font-icon-share-square);
}

.jmix-font-icon-share:before {
    content: var(--jmix-font-icon-share);
}

.jmix-font-icon-shield:before {
    content: var(--jmix-font-icon-shield);
}

.jmix-font-icon-shift-arrow:before {
    content: var(--jmix-font-icon-shift-arrow);
}

.jmix-font-icon-shift:before {
    content: var(--jmix-font-icon-shift);
}

.jmix-font-icon-shop:before {
    content: var(--jmix-font-icon-shop);
}

.jmix-font-icon-sign-in-alt:before {
    content: var(--jmix-font-icon-sign-in-alt);
}

.jmix-font-icon-sign-in:before {
    content: var(--jmix-font-icon-sign-in);
}

.jmix-font-icon-sign-out-alt:before {
    content: var(--jmix-font-icon-sign-out-alt);
}

.jmix-font-icon-sign-out:before {
    content: var(--jmix-font-icon-sign-out);
}

.jmix-font-icon-signal:before {
    content: var(--jmix-font-icon-signal);
}

.jmix-font-icon-sitemap:before {
    content: var(--jmix-font-icon-sitemap);
}

.jmix-font-icon-slider:before {
    content: var(--jmix-font-icon-slider);
}

.jmix-font-icon-sliders:before {
    content: var(--jmix-font-icon-sliders);
}

.jmix-font-icon-smiley-o:before {
    content: var(--jmix-font-icon-smiley-o);
}

.jmix-font-icon-smiley:before {
    content: var(--jmix-font-icon-smiley);
}

.jmix-font-icon-sort:before {
    content: var(--jmix-font-icon-sort);
}

.jmix-font-icon-sound-disable:before {
    content: var(--jmix-font-icon-sound-disable);
}

.jmix-font-icon-spark-line:before {
    content: var(--jmix-font-icon-spark-line);
}

.jmix-font-icon-specialist:before {
    content: var(--jmix-font-icon-specialist);
}

.jmix-font-icon-spinner-arc:before {
    content: var(--jmix-font-icon-spinner-arc);
}

.jmix-font-icon-spinner-third:before {
    content: var(--jmix-font-icon-spinner-third);
}

.jmix-font-icon-spinner:before {
    content: var(--jmix-font-icon-spinner);
}

.jmix-font-icon-spline-area-chart:before {
    content: var(--jmix-font-icon-spline-area-chart);
}

.jmix-font-icon-spline-chart:before {
    content: var(--jmix-font-icon-spline-chart);
}

.jmix-font-icon-split-h:before {
    content: var(--jmix-font-icon-split-h);
}

.jmix-font-icon-split-v:before {
    content: var(--jmix-font-icon-split-v);
}

.jmix-font-icon-split:before {
    content: var(--jmix-font-icon-split);
}

.jmix-font-icon-spoon:before {
    content: var(--jmix-font-icon-spoon);
}

.jmix-font-icon-square-shadow:before {
    content: var(--jmix-font-icon-square-shadow);
}

.jmix-font-icon-square:before {
    content: var(--jmix-font-icon-square);
}

.jmix-font-icon-star-half-left-o:before {
    content: var(--jmix-font-icon-star-half-left-o);
}

.jmix-font-icon-star-half-left:before {
    content: var(--jmix-font-icon-star-half-left);
}

.jmix-font-icon-star-half-right-o:before {
    content: var(--jmix-font-icon-star-half-right-o);
}

.jmix-font-icon-star-half-right:before {
    content: var(--jmix-font-icon-star-half-right);
}

.jmix-font-icon-star-half:before {
    content: var(--jmix-font-icon-star-half);
}

.jmix-font-icon-star-o:before {
    content: var(--jmix-font-icon-star-o);
}

.jmix-font-icon-star:before {
    content: var(--jmix-font-icon-star);
}

.jmix-font-icon-start-cog:before {
    content: var(--jmix-font-icon-start-cog);
}

.jmix-font-icon-step-backward:before {
    content: var(--jmix-font-icon-step-backward);
}

.jmix-font-icon-step-forward:before {
    content: var(--jmix-font-icon-step-forward);
}

.jmix-font-icon-stethoscope:before {
    content: var(--jmix-font-icon-stethoscope);
}

.jmix-font-icon-stock:before {
    content: var(--jmix-font-icon-stock);
}

.jmix-font-icon-stop-cog:before {
    content: var(--jmix-font-icon-stop-cog);
}

.jmix-font-icon-stop:before {
    content: var(--jmix-font-icon-stop);
}

.jmix-font-icon-stopwatch:before {
    content: var(--jmix-font-icon-stopwatch);
}

.jmix-font-icon-storage:before {
    content: var(--jmix-font-icon-storage);
}

.jmix-font-icon-strikethrough:before {
    content: var(--jmix-font-icon-strikethrough);
}

.jmix-font-icon-subscript:before {
    content: var(--jmix-font-icon-subscript);
}

.jmix-font-icon-suitcase:before {
    content: var(--jmix-font-icon-suitcase);
}

.jmix-font-icon-sun-down:before {
    content: var(--jmix-font-icon-sun-down);
}

.jmix-font-icon-sun-o:before {
    content: var(--jmix-font-icon-sun-o);
}

.jmix-font-icon-sun:before {
    content: var(--jmix-font-icon-sun);
}

.jmix-font-icon-sun-rise:before {
    content: var(--jmix-font-icon-sun-rise);
}

.jmix-font-icon-superscript:before {
    content: var(--jmix-font-icon-superscript);
}

.jmix-font-icon-sword:before {
    content: var(--jmix-font-icon-sword);
}

.jmix-font-icon-tab-a:before {
    content: var(--jmix-font-icon-tab-a);
}

.jmix-font-icon-tab:before {
    content: var(--jmix-font-icon-tab);
}

.jmix-font-icon-table:before {
    content: var(--jmix-font-icon-table);
}

.jmix-font-icon-tablet:before {
    content: var(--jmix-font-icon-tablet);
}

.jmix-font-icon-tabs:before {
    content: var(--jmix-font-icon-tabs);
}

.jmix-font-icon-tag:before {
    content: var(--jmix-font-icon-tag);
}

.jmix-font-icon-tags:before {
    content: var(--jmix-font-icon-tags);
}

.jmix-font-icon-tasks:before {
    content: var(--jmix-font-icon-tasks);
}

.jmix-font-icon-taxi:before {
    content: var(--jmix-font-icon-taxi);
}

.jmix-font-icon-teeth:before {
    content: var(--jmix-font-icon-teeth);
}

.jmix-font-icon-terminal:before {
    content: var(--jmix-font-icon-terminal);
}

.jmix-font-icon-text-height:before {
    content: var(--jmix-font-icon-text-height);
}

.jmix-font-icon-text-input:before {
    content: var(--jmix-font-icon-text-input);
}

.jmix-font-icon-text-label:before {
    content: var(--jmix-font-icon-text-label);
}

.jmix-font-icon-text-width:before {
    content: var(--jmix-font-icon-text-width);
}

.jmix-font-icon-thin-square:before {
    content: var(--jmix-font-icon-thin-square);
}

.jmix-font-icon-thumbs-down-o:before {
    content: var(--jmix-font-icon-thumbs-down-o);
}

.jmix-font-icon-thumbs-down:before {
    content: var(--jmix-font-icon-thumbs-down);
}

.jmix-font-icon-thumbs-up-o:before {
    content: var(--jmix-font-icon-thumbs-up-o);
}

.jmix-font-icon-thumbs-up:before {
    content: var(--jmix-font-icon-thumbs-up);
}

.jmix-font-icon-ticket:before {
    content: var(--jmix-font-icon-ticket);
}

.jmix-font-icon-time-backward:before {
    content: var(--jmix-font-icon-time-backward);
}

.jmix-font-icon-time-forward:before {
    content: var(--jmix-font-icon-time-forward);
}

.jmix-font-icon-timer:before {
    content: var(--jmix-font-icon-timer);
}

.jmix-font-icon-toolbox:before {
    content: var(--jmix-font-icon-toolbox);
}

.jmix-font-icon-tools:before {
    content: var(--jmix-font-icon-tools);
}

.jmix-font-icon-tooth:before {
    content: var(--jmix-font-icon-tooth);
}

.jmix-font-icon-touch:before {
    content: var(--jmix-font-icon-touch);
}

.jmix-font-icon-train:before {
    content: var(--jmix-font-icon-train);
}

.jmix-font-icon-trash:before {
    content: var(--jmix-font-icon-trash);
}

.jmix-font-icon-tree-table:before {
    content: var(--jmix-font-icon-tree-table);
}

.jmix-font-icon-trending-down:before {
    content: var(--jmix-font-icon-trending-down);
}

.jmix-font-icon-trending-up:before {
    content: var(--jmix-font-icon-trending-up);
}

.jmix-font-icon-trophy:before {
    content: var(--jmix-font-icon-trophy);
}

.jmix-font-icon-truck:before {
    content: var(--jmix-font-icon-truck);
}

.jmix-font-icon-twin-col-select:before {
    content: var(--jmix-font-icon-twin-col-select);
}

.jmix-font-icon-twitter-square:before {
    content: var(--jmix-font-icon-twitter-square);
}

.jmix-font-icon-twitter:before {
    content: var(--jmix-font-icon-twitter);
}

.jmix-font-icon-umbrella:before {
    content: var(--jmix-font-icon-umbrella);
}

.jmix-font-icon-underline:before {
    content: var(--jmix-font-icon-underline);
}

.jmix-font-icon-unlink:before {
    content: var(--jmix-font-icon-unlink);
}

.jmix-font-icon-unlock:before {
    content: var(--jmix-font-icon-unlock);
}

.jmix-font-icon-upload-alt:before {
    content: var(--jmix-font-icon-upload-alt);
}

.jmix-font-icon-upload:before {
    content: var(--jmix-font-icon-upload);
}

.jmix-font-icon-user-card:before {
    content: var(--jmix-font-icon-user-card);
}

.jmix-font-icon-user-check:before {
    content: var(--jmix-font-icon-user-check);
}

.jmix-font-icon-user-clock:before {
    content: var(--jmix-font-icon-user-clock);
}

.jmix-font-icon-user-heart:before {
    content: var(--jmix-font-icon-user-heart);
}

.jmix-font-icon-user-star:before {
    content: var(--jmix-font-icon-user-star);
}

.jmix-font-icon-user:before {
    content: var(--jmix-font-icon-user);
}

.jmix-font-icon-users:before {
    content: var(--jmix-font-icon-users);
}

.jmix-font-icon-vaadin-h:before {
    content: var(--jmix-font-icon-vaadin-h);
}

.jmix-font-icon-vaadin-v:before {
    content: var(--jmix-font-icon-vaadin-v);
}

.jmix-font-icon-viewport:before {
    content: var(--jmix-font-icon-viewport);
}

.jmix-font-icon-vimeo-square:before {
    content: var(--jmix-font-icon-vimeo-square);
}

.jmix-font-icon-vimeo:before {
    content: var(--jmix-font-icon-vimeo);
}

.jmix-font-icon-volume-down:before {
    content: var(--jmix-font-icon-volume-down);
}

.jmix-font-icon-volume-off:before {
    content: var(--jmix-font-icon-volume-off);
}

.jmix-font-icon-volume-up:before {
    content: var(--jmix-font-icon-volume-up);
}

.jmix-font-icon-volume:before {
    content: var(--jmix-font-icon-volume);
}

.jmix-font-icon-wallet:before {
    content: var(--jmix-font-icon-wallet);
}

.jmix-font-icon-warning:before {
    content: var(--jmix-font-icon-warning);
}

.jmix-font-icon-workplace:before {
    content: var(--jmix-font-icon-workplace);
}

.jmix-font-icon-wrench:before {
    content: var(--jmix-font-icon-wrench);
}

.jmix-font-icon-youtube-square:before {
    content: var(--jmix-font-icon-youtube-square);
}

.jmix-font-icon-youtube:before {
    content: var(--jmix-font-icon-youtube);
}

.jmix-font-icon-photo:before {
    content: var(--jmix-font-icon-photo);
}

.jmix-font-icon-redo:before {
    content: var(--jmix-font-icon-redo);
}

.jmix-font-icon-undo:before {
    content: var(--jmix-font-icon-undo);
}


/* jmix-lumo/src/icons/jmix-font-icons.css */
.jmix-font-icon,
vaadin-badge > vaadin-icon.jmix-font-icon.jmix-font-icon-lumo[slot="icon"] {
    /* Fixes Safari browser bug which incorrectly handle '100cqh' */
    --vaadin-icon-visual-size: 1em;
}

.jmix-font-icon.jmix-font-icon-lumo,
jmix-notifications-indicator > vaadin-icon[icon-class~="jmix-font-icon"][slot="icon"]:not([icon-class~="jmix-font-icon-lumo"]) {
    /* Fixes Safari browser bug which incorrectly handle '100cqh' */
    --vaadin-icon-visual-size: 1.5em; /* 24px, Lumo icons are based on a 24x24 grid with 16x16 icon inside) */
}

/* jmix-lumo/components/index.css */
/* Jmix components */
/* jmix-lumo/components/jmix-switch.css */
/* jmix-lumo/src/components/jmix-switch.css */
@media lumo_components_jmix-switch {

    /* Ex Base styles */
    :host {
        display: inline-block;
    }

    :host([hidden]) {
        display: none !important;
    }

    :host([disabled]) {
        -webkit-tap-highlight-color: transparent;
    }

    .jmix-switch-container {
        display: grid;
        grid-template-columns: auto 1fr;
        align-items: baseline;
    }

    [part='switch'],
    ::slotted(input),
    [part='label'] {
        grid-row: 1;
    }

    [part='switch'],
    ::slotted(input) {
        grid-column: 1;
    }

    [part='helper-text'],
    [part='error-message'] {
        grid-column: 2;
    }

    :host(:not([has-helper])) [part='helper-text'],
    :host(:not([has-error-message])) [part='error-message'] {
        display: none;
    }

    [part='switch'] {
        display: inline-flex;
        align-items: center;
        align-self: anchor-center;

        width: calc(var(--jmix-switch-size, calc(2.75em / 2)) * 2);
        height: var(--jmix-switch-size, calc(2.75em / 2));

        --_input-border-width: var(--vaadin-input-field-border-width, 0);
        --_input-border-color: var(--vaadin-input-field-border-color, transparent);
        box-shadow: inset 0 0 0 var(--_input-border-width, 0) var(--_input-border-color);
    }

    [part='switch'] .indicator {
        --_input-border-width: var(--vaadin-input-field-border-width, 0);
        --_input-border-color: var(--vaadin-input-field-border-color, transparent);
        box-shadow: inset 0 0 0 var(--_input-border-width, 0) var(--_input-border-color);
    }

    /* visually hidden */
    ::slotted(input) {
        opacity: 0;
        cursor: inherit;
        margin: 0;
        align-self: stretch;
        -webkit-appearance: none;
        width: initial;
        height: initial;
    }

    /* Lumo specific styles */
    :host {
        color: var(--jmix-switch-label-color, var(--lumo-body-text-color));
        font-size: var(--jmix-switch-label-font-size, var(--lumo-font-size-m));
        font-family: var(--lumo-font-family);
        line-height: var(--lumo-line-height-s);
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        -webkit-tap-highlight-color: transparent;
        -webkit-user-select: none;
        -moz-user-select: none;
        user-select: none;
        cursor: default;
        outline: none;

        --_switch-size: var(--jmix-switch-size, calc(var(--lumo-size-l) / 2));
        --_switch-background: var(--jmix-switch-background, var(--lumo-contrast-20pct));
        --_switch-indicator-size: var(--jmix-switch-indicator-size, calc(var(--lumo-size-m) / 2));
        --_focus-ring-color: var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
        --_focus-ring-width: var(--vaadin-focus-ring-width, 2px);
        --_selection-color: var(--vaadin-selection-color, var(--lumo-primary-color));
        --_invalid-background: var(--vaadin-input-field-invalid-background, var(--lumo-error-color-10pct));
        --_disabled-checked-indicator-color: var(--jmix-switch-disabled-checked-indicator-color, var(--lumo-contrast-30pct));
    }

    [part='label'] {
        display: flex;
        position: relative;
        max-width: max-content;
    }

    :host([has-label]) ::slotted(label) {
        padding: var(
                --jmix-switch-label-padding,
                var(--lumo-space-xs) var(--lumo-space-s) var(--lumo-space-xs) var(--lumo-space-xs)
        );
    }

    :host([dir='rtl'][has-label]) ::slotted(label) {
        padding: var(--lumo-space-xs) var(--lumo-space-xs) var(--lumo-space-xs) var(--lumo-space-s);
    }

    :host([has-label][required]) ::slotted(label) {
        padding-inline-end: var(--lumo-space-m);
    }

    [part='switch'] {
        box-sizing: border-box;
        width: calc(var(--_switch-size) * 2);
        height: var(--_switch-size);

        margin: var(--lumo-space-xs);

        position: relative;
        border-radius: var(--jmix-switch-border-radius, calc(var(--_switch-size) / 2));
        background: var(--_switch-background);
        transition: transform 0.2s cubic-bezier(0.12, 0.32, 0.54, 2),
        background-color 0.15s;
        cursor: var(--lumo-clickable-cursor);

        /* Default field border color */
        --_input-border-color: var(--vaadin-input-field-border-color, var(--lumo-contrast-50pct));
    }

    :host([checked]) {
        --vaadin-input-field-border-color: transparent;
    }

    :host([checked]) [part='switch'] {
        background-color: var(--_selection-color);
    }

    /* Checked indicator */

    [part='switch'] .indicator {
        width: var(--_switch-indicator-size);
        height: var(--_switch-indicator-size);
        border-radius: 50%;

        background-color: var(--jmix-switch-indicator-color, var(--lumo-tint-90pct));
        border: none;
        box-sizing: border-box;

        margin-inline-start: calc(var(--lumo-space-xs) / 2);
        transform: none;

        opacity: 1;
        transition: margin-inline-start 0.2s ease;

        /* Default field border color */
        --_input-border-color: var(--vaadin-input-field-border-color, var(--lumo-contrast-50pct));
    }

    :host([checked]) [part='switch'] .indicator {
        margin-inline-start: calc(100% - var(--_switch-indicator-size) - calc(var(--lumo-space-xs) / 2));
        background-color: var(--jmix-switch-checked-indicator-color, var(--lumo-primary-contrast-color));
    }

    /* Readonly */

    :host([readonly]:not([checked])) {
        color: var(--lumo-secondary-text-color);
    }

    :host([readonly]:not([checked])) [part='switch'] {
        background: transparent;
        box-shadow: none;
        border: var(--vaadin-input-field-readonly-border, 1px dashed var(--lumo-contrast-50pct));
    }

    :host([readonly]:not([checked])) [part='switch'] .indicator {
        background: transparent;
        box-shadow: none;
        border-radius: inherit;
        border: var(--vaadin-input-field-readonly-border, 1px dashed var(--lumo-contrast-50pct));
    }

    /* Focus ring */

    :host([focus-ring]) [part='switch'] {
        box-shadow: 0 0 0 1px var(--lumo-base-color),
        0 0 0 calc(var(--_focus-ring-width) + 1px) var(--_focus-ring-color),
        inset 0 0 0 var(--_input-border-width, 0) var(--_input-border-color);
    }

    :host([focus-ring][readonly]:not([checked])) [part='switch'] {
        box-shadow: 0 0 0 1px var(--lumo-base-color),
        0 0 0 calc(var(--_focus-ring-width) + 1px) var(--_focus-ring-color);
    }

    /* Disabled */

    :host([disabled]) {
        pointer-events: none;
        --vaadin-input-field-border-color: var(--lumo-contrast-20pct);
    }

    :host([disabled]) ::slotted(label) {
        color: inherit;
    }

    :host([disabled]) [part='switch'] {
        background-color: var(--jmix-switch-disabled-background, var(--lumo-contrast-10pct));
    }

    :host([disabled]) [part='switch'] .indicator {
        background-color: var(--_disabled-checked-indicator-color);
    }

    :host([disabled]) [part='label'],
    :host([disabled]) [part='helper-text'] {
        color: var(--lumo-disabled-text-color);
        -webkit-text-fill-color: var(--lumo-disabled-text-color);
    }

    :host([readonly][checked]:not([disabled])) [part='switch'] {
        background-color: var(--jmix-switch-readonly-checked-background, var(--lumo-contrast-70pct));
    }

    /* Used for activation "halo" */

    [part='switch']::after {
        position: absolute;
        content: "";
        pointer-events: none;
        color: transparent;
        width: 100%;
        height: 100%;
        line-height: var(--_switch-size);
        border-radius: inherit;
        background-color: inherit;
        transform: scale(1.2);
        opacity: 0;
        transition: transform 0.1s, opacity 0.8s;
    }

    /* Hover */

    :host(:not([checked]):not([disabled]):not([readonly]):not([invalid]):hover) [part='switch'] {
        background: var(--jmix-switch-background-hover, var(--lumo-contrast-30pct));
    }

    /* Disable hover for touch devices */

    @media (pointer: coarse) {
        /* prettier-ignore */
        :host(:not([checked]):not([disabled]):not([readonly]):not([invalid]):hover) [part='switch'] {
            background: var(--_switch-background);
        }
    }

    /* Active */

    :host([active]) [part='switch'] {
        transform: none;
    }

    :host([active]:not([checked])) [part='switch']::after {
        transition-duration: 0.01s, 0.01s;
        transform: scale(0);
        opacity: 0.4;
    }

    /* Must be defined in the Lumo theme in order to override the default styles */
    @media (prefers-reduced-motion: reduce) {
        [part='switch']::after {
            content: none;
        }
    }

    @media (forced-colors: active) {
        [part='switch'] {
            outline: 1px solid;
            outline-offset: -1px;
        }

        [part='switch'] .indicator {
            outline: 1px solid;
            outline-offset: -1px;
            border-radius: inherit;
            background-color: buttontext;
        }

        :host([disabled]) [part='switch'],
        :host([disabled]) [part='switch'] .indicator {
            outline-color: GrayText;
        }

        :host(:is([checked])) [part='switch'] {
            background: highlight;
        }

        :host(:is([checked])) [part='switch'] .indicator {
            outline: 1px solid;
            outline-offset: -1px;
            border-radius: inherit;
        }

        :host([focused]) [part='switch'] {
            outline-width: 2px;
        }
    }

    /* Required */

    :host([required]) [part='required-indicator'] {
        position: absolute;
        top: var(--lumo-space-xs);
        right: var(--lumo-space-xs);
    }

    :host([required][dir='rtl']) [part='required-indicator'] {
        right: auto;
        left: var(--lumo-space-xs);
    }

    :host([required]) [part='required-indicator']::after {
        content: var(--lumo-required-field-indicator, '\2022');
        transition: opacity 0.2s;
        color: var(--lumo-required-field-indicator-color, var(--lumo-primary-text-color));
        width: 1em;
        text-align: center;
    }

    :host(:not([has-label])) [part='required-indicator'] {
        display: none;
    }

    /* Invalid */

    :host([invalid]) {
        --vaadin-input-field-border-color: var(--lumo-error-color);
    }

    :host([invalid]) [part='switch'] {
        background-color: var(--_invalid-background);
        background-image: linear-gradient(var(--_invalid-background) 0%, var(--_invalid-background) 100%);
    }

    :host([invalid]:hover) [part='switch'] {
        background-image: linear-gradient(var(--_invalid-background) 0%, var(--_invalid-background) 100%),
        linear-gradient(var(--_invalid-background) 0%, var(--_invalid-background) 100%);
    }

    :host([invalid][focus-ring]) {
        --_focus-ring-color: var(--lumo-error-color-50pct);
    }

    :host([invalid]) [part='required-indicator']::after {
        color: var(--lumo-required-field-indicator-color, var(--lumo-error-text-color));
    }

    /* Error message */

    [part='error-message'] {
        font-size: var(--vaadin-input-field-error-font-size, var(--lumo-font-size-xs));
        line-height: var(--lumo-line-height-xs);
        font-weight: var(--vaadin-input-field-error-font-weight, 400);
        color: var(--vaadin-input-field-error-color, var(--lumo-error-text-color));
        will-change: max-height;
        transition: 0.4s max-height;
        max-height: 5em;
        padding-inline-start: var(--lumo-space-xs);
    }

    :host([has-error-message]) [part='error-message']::after,
    :host([has-helper]) [part='helper-text']::after {
        content: '';
        display: block;
        height: 0.4em;
    }

    :host(:not([invalid])) [part='error-message'] {
        max-height: 0;
        overflow: hidden;
    }

    /* Helper */

    [part='helper-text'] {
        display: block;
        color: var(--vaadin-input-field-helper-color, var(--lumo-secondary-text-color));
        font-size: var(--vaadin-input-field-helper-font-size, var(--lumo-font-size-xs));
        line-height: var(--lumo-line-height-xs);
        font-weight: var(--vaadin-input-field-helper-font-weight, 400);
        margin-left: calc(var(--lumo-border-radius-m) / 4);
        transition: color 0.2s;
        padding-inline-start: var(--lumo-space-xs);
    }

    :host(:hover:not([readonly])) [part='helper-text'] {
        color: var(--lumo-body-text-color);
    }

    :host([has-error-message]) ::slotted(label),
    :host([has-helper]) ::slotted(label) {
        padding-bottom: 0;
    }
}


:root::before,
:host::before {
    --_lumo-jmix-switch-inject: 1;
    --_lumo-jmix-switch-inject-modules: lumo_components_jmix-switch;
}

/* jmix-lumo/components/jmix-code-editor.css */
/* jmix-lumo/src/components/jmix-code-editor.css */
@media lumo_components_jmix-code-editor {

    /* Ex Base styles */
    :host {
        width: 50em;
        height: 20em;
    }

    .jmix-code-editor-container {
        /*
         * Sized by the host through flex, not by a percentage: a percentage does not resolve
         * against an 'auto' height, and setting 'height' at all would suppress the cross-axis
         * stretch that gives the container its height when the host is sized by 'min-height'.
         */
        flex: 1;
        min-height: 0;
    }

    /* Lumo specific styles */
    [part='input-field'] ::slotted(textarea) {
        height: auto;
        box-sizing: border-box;
    }

    [part='input-field'] {
        height: auto;
        flex: 1;
        min-height: 0;
        box-sizing: border-box;
        display: flex;
        transition: background-color 0.1s;
        line-height: var(--lumo-line-height-s);
        border: 1px solid var(--lumo-contrast-20pct);
        border-radius: var(--lumo-border-radius-l);
    }

    /*
     * Ace is rendered into a nested element rather than into the 'input-field' part. The part is a
     * public styling hook, so an application theme addressing '::part(input-field)' from the
     * document wins over the styles an Ace theme injects into the shadow root, and would repaint
     * the editor with the colors of the field.
     */
    .jmix-code-editor-canvas,
    /*
     * Ace adds '.ace_editor' to the canvas on initialization; the doubled class outweighs the
     * percentage sizing of the vendored Ace stylesheet regardless of the order of the rules.
     */
    .jmix-code-editor-canvas.ace_editor {
        /* The canvas is sized by the field: stretched vertically, filling it horizontally. */
        flex: 1;
        width: auto;
        height: auto;
        min-width: 0;
        border-radius: inherit;
        overflow: hidden;
    }

    :host(:not([readonly])) [part='input-field']::after {
        display: none;
    }

    :host([readonly]) [part='input-field'] {
        border: 1px dashed var(--lumo-contrast-30pct);
    }

    :host([readonly]) [part='input-field']::after {
        border: none;
    }

    [part='input-field'] ::slotted(textarea) {
        line-height: inherit;
        --_lumo-text-field-overflow-mask-image: none;
    }

    /* Ace specific styles */

    /*ace_scrollbar.css*/
    .ace_editor > .ace_sb-v div, .ace_editor > .ace_sb-h div {
        position: absolute;
        background: rgba(128, 128, 128, 0.6);
        -moz-box-sizing: border-box;
        box-sizing: border-box;
        border: 1px solid #bbb;
        border-radius: 2px;
        z-index: 8;
    }

    .ace_editor > .ace_sb-v, .ace_editor > .ace_sb-h {
        position: absolute;
        z-index: 6;
        background: none;
        overflow: hidden !important;
    }

    .ace_editor > .ace_sb-v {
        z-index: 6;
        right: 0;
        top: 0;
        width: 12px;
    }

    .ace_editor > .ace_sb-v div {
        z-index: 8;
        right: 0;
        width: 100%;
    }

    .ace_editor > .ace_sb-h {
        bottom: 0;
        left: 0;
        height: 12px;
    }

    .ace_editor > .ace_sb-h div {
        bottom: 0;
        height: 100%;
    }

    .ace_editor > .ace_sb_grabbed {
        z-index: 8;
        background: #000;
    }

    /*ace_editor.css*/

    .ace_br1 {
        border-top-left-radius: 3px;
    }

    .ace_br2 {
        border-top-right-radius: 3px;
    }

    .ace_br3 {
        border-top-left-radius: 3px;
        border-top-right-radius: 3px;
    }

    .ace_br4 {
        border-bottom-right-radius: 3px;
    }

    .ace_br5 {
        border-top-left-radius: 3px;
        border-bottom-right-radius: 3px;
    }

    .ace_br6 {
        border-top-right-radius: 3px;
        border-bottom-right-radius: 3px;
    }

    .ace_br7 {
        border-top-left-radius: 3px;
        border-top-right-radius: 3px;
        border-bottom-right-radius: 3px;
    }

    .ace_br8 {
        border-bottom-left-radius: 3px;
    }

    .ace_br9 {
        border-top-left-radius: 3px;
        border-bottom-left-radius: 3px;
    }

    .ace_br10 {
        border-top-right-radius: 3px;
        border-bottom-left-radius: 3px;
    }

    .ace_br11 {
        border-top-left-radius: 3px;
        border-top-right-radius: 3px;
        border-bottom-left-radius: 3px;
    }

    .ace_br12 {
        border-bottom-right-radius: 3px;
        border-bottom-left-radius: 3px;
    }

    .ace_br13 {
        border-top-left-radius: 3px;
        border-bottom-right-radius: 3px;
        border-bottom-left-radius: 3px;
    }

    .ace_br14 {
        border-top-right-radius: 3px;
        border-bottom-right-radius: 3px;
        border-bottom-left-radius: 3px;
    }

    .ace_br15 {
        border-top-left-radius: 3px;
        border-top-right-radius: 3px;
        border-bottom-right-radius: 3px;
        border-bottom-left-radius: 3px;
    }

    .ace_editor {
        height: 100%;
        width: 100%;
        position: relative;
        overflow: hidden;
        padding:  0;
        font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'Source Code Pro', 'source-code-pro', monospace;
        direction: ltr;
        text-align: left;
        -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
    }

    .ace_scroller {
        position: absolute;
        overflow: hidden;
        top: 0;
        bottom: 0;
        background-color: inherit;
        -ms-user-select: none;
        -moz-user-select: none;
        -webkit-user-select: none;
        user-select: none;
        cursor: text;
    }

    .ace_content {
        position: absolute;
        box-sizing: border-box;
        min-width: 100%;
        contain: style size layout;
        font-variant-ligatures: no-common-ligatures;
    }

    .ace_dragging .ace_scroller:before {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        content: '';
        background: rgba(250, 250, 250, 0.01);
        z-index: 1000;
    }

    .ace_dragging.ace_dark .ace_scroller:before {
        background: rgba(0, 0, 0, 0.01);
    }

    .ace_gutter {
        position: absolute;
        overflow: hidden;
        width: auto;
        top: 0;
        bottom: 0;
        left: 0;
        cursor: default;
        z-index: 1;
        -ms-user-select: none;
        -moz-user-select: none;
        -webkit-user-select: none;
        user-select: none;
        contain: style size layout;
    }

    .ace_gutter-active-line {
        position: absolute;
        left: 0;
        right: 0;
    }

    .ace_scroller.ace_scroll-left:after {
        content: "";
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;
        pointer-events: none;
    }

    .ace_gutter-cell {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        padding-left: 19px;
        padding-right: 6px;
        background-repeat: no-repeat;
    }

    .ace_gutter-cell.ace_error {
        background-image: url("src/components/style/main-1.png");
        background-repeat: no-repeat;
        background-position: 2px center;
    }

    .ace_gutter-cell.ace_warning {
        background-image: url("src/components/style/main-2.png");
        background-position: 2px center;
    }

    .ace_gutter-cell.ace_info {
        background-image: url("src/components/style/main-3.png");
        background-position: 2px center;
    }

    .ace_dark .ace_gutter-cell.ace_info {
        background-image: url("src/components/style/main-4.png");
    }

    .ace_scrollbar {
        contain: strict;
        position: absolute;
        right: 0;
        bottom: 0;
        z-index: 6;
    }

    .ace_scrollbar-inner {
        position: absolute;
        cursor: text;
        left: 0;
        top: 0;
    }

    .ace_scrollbar-v {
        overflow-x: hidden;
        overflow-y: scroll;
        top: 0;
    }

    .ace_scrollbar-h {
        overflow-x: scroll;
        overflow-y: hidden;
        left: 0;
    }

    .ace_print-margin {
        position: absolute;
        height: 100%;
    }

    .ace_text-input {
        position: absolute;
        z-index: 0;
        width: 0.5em;
        height: 1em;
        opacity: 0;
        background: transparent;
        -moz-appearance: none;
        appearance: none;
        border: none;
        resize: none;
        outline: none;
        overflow: hidden;
        font: inherit;
        padding: 0 1px;
        margin: 0 -1px;
        contain: strict;
        -ms-user-select: text;
        -moz-user-select: text;
        -webkit-user-select: text;
        user-select: text;
        /*with `pre-line` chrome inserts &nbsp; instead of space*/
        white-space: pre !important;
    }

    .ace_text-input.ace_composition {
        background: transparent;
        color: inherit;
        z-index: 1000;
        opacity: 1;
    }

    .ace_composition_placeholder {
        color: transparent
    }

    .ace_composition_marker {
        border-bottom: 1px solid;
        position: absolute;
        border-radius: 0;
        margin-top: 1px;
    }

    [ace_nocontext=true] {
        transform: none !important;
        filter: none !important;
        clip-path: none !important;
        mask: none !important;
        contain: none !important;
        perspective: none !important;
        mix-blend-mode: initial !important;
        z-index: auto;
    }

    .ace_layer {
        z-index: 1;
        position: absolute;
        overflow: hidden;
        /* workaround for chrome bug https://github.com/ajaxorg/ace/issues/2312*/
        word-wrap: normal;
        white-space: pre;
        height: 100%;
        width: 100%;
        box-sizing: border-box;
        /* setting pointer-events: auto; on node under the mouse, which changes
        during scroll, will break mouse wheel scrolling in Safari */
        pointer-events: none;
    }

    .ace_gutter-layer {
        position: relative;
        width: auto;
        text-align: right;
        pointer-events: auto;
        height: 1000000px;
        contain: style size layout;
    }

    .ace_text-layer {
        font: inherit !important;
        position: absolute;
        height: 1000000px;
        width: 1000000px;
        contain: style size layout;
    }

    .ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {
        contain: style size layout;
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
    }

    .ace_hidpi .ace_text-layer,
    .ace_hidpi .ace_gutter-layer,
    .ace_hidpi .ace_content,
    .ace_hidpi .ace_gutter {
        contain: strict;
        will-change: transform;
    }

    .ace_hidpi .ace_text-layer > .ace_line,
    .ace_hidpi .ace_text-layer > .ace_line_group {
        contain: strict;
    }

    .ace_cjk {
        display: inline-block;
        text-align: center;
    }

    .ace_cursor-layer {
        z-index: 4;
    }

    .ace_cursor {
        z-index: 4;
        position: absolute;
        box-sizing: border-box;
        border-left: 2px solid;
        /* workaround for smooth cursor repaintng whole screen in chrome */
        transform: translatez(0);
    }

    .ace_multiselect .ace_cursor {
        border-left-width: 1px;
    }

    .ace_slim-cursors .ace_cursor {
        border-left-width: 1px;
    }

    .ace_overwrite-cursors .ace_cursor {
        border-left-width: 0;
        border-bottom: 1px solid;
    }

    .ace_hidden-cursors .ace_cursor {
        opacity: 0.2;
    }

    .ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {
        opacity: 0;
    }

    .ace_smooth-blinking .ace_cursor {
        transition: opacity 0.18s;
    }

    .ace_animate-blinking .ace_cursor {
        animation-duration: 1000ms;
        animation-timing-function: step-end;
        animation-name: blink-ace-animate;
        animation-iteration-count: infinite;
    }

    .ace_animate-blinking.ace_smooth-blinking .ace_cursor {
        animation-duration: 1000ms;
        animation-timing-function: ease-in-out;
        animation-name: blink-ace-animate-smooth;
    }

    @keyframes blink-ace-animate {
        from, to {
            opacity: 1;
        }
        60% {
            opacity: 0;
        }
    }

    @keyframes blink-ace-animate-smooth {
        from, to {
            opacity: 1;
        }
        45% {
            opacity: 1;
        }
        60% {
            opacity: 0;
        }
        85% {
            opacity: 0;
        }
    }

    .ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {
        position: absolute;
        z-index: 3;
    }

    .ace_marker-layer .ace_selection {
        position: absolute;
        z-index: 5;
    }

    .ace_marker-layer .ace_bracket {
        position: absolute;
        z-index: 6;
    }

    .ace_marker-layer .ace_error_bracket {
        position: absolute;
        border-bottom: 1px solid #DE5555;
        border-radius: 0;
    }

    .ace_marker-layer .ace_active-line {
        position: absolute;
        z-index: 2;
    }

    .ace_marker-layer .ace_selected-word {
        position: absolute;
        z-index: 4;
        box-sizing: border-box;
    }

    .ace_line .ace_fold {
        box-sizing: border-box;
        display: inline-block;
        height: 11px;
        margin-top: -2px;
        vertical-align: middle;
        background-image: url("src/components/style/main-5.png"),
        url("src/components/style/main-6.png");
        background-repeat: no-repeat, repeat-x;
        background-position: center center, top left;
        color: transparent;
        border: 1px solid black;
        border-radius: 2px;
        cursor: pointer;
        pointer-events: auto;
    }

    .ace_dark .ace_fold {
    }

    .ace_fold:hover {
        background-image: url("src/components/style/main-7.png"),
        url("src/components/style/main-8.png");
    }

    .ace_tooltip {
        background-color: #f5f5f5;
        border: 1px solid gray;
        border-radius: 1px;
        box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
        color: black;
        max-width: 100%;
        padding: 3px 4px;
        position: fixed;
        z-index: 999999;
        box-sizing: border-box;
        cursor: default;
        white-space: pre;
        word-wrap: break-word;
        line-height: normal;
        font-style: normal;
        font-weight: normal;
        letter-spacing: normal;
        pointer-events: none;
    }

    .ace_tooltip:focus {
        outline: 1px solid black;
    }

    .ace_folding-enabled > .ace_gutter-cell {
        padding-right: 13px;
    }

    .ace_fold-widget {
        box-sizing: border-box;
        margin: 0 -12px 0 1px;
        display: none;
        width: 11px;
        vertical-align: top;
        background-image: url("src/components/style/main-9.png");
        background-repeat: no-repeat;
        background-position: center;
        border-radius: 3px;
        border: 1px solid transparent;
        cursor: pointer;
    }

    .ace_folding-enabled .ace_fold-widget {
        display: inline-block;
    }

    .ace_fold-widget.ace_end {
        background-image: url("src/components/style/main-10.png");
    }

    .ace_fold-widget.ace_closed {
        background-image: url("src/components/style/main-11.png");
    }

    .ace_fold-widget:hover {
        border: 1px solid rgba(0, 0, 0, 0.3);
        background-color: rgba(255, 255, 255, 0.2);
        box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);
    }

    .ace_fold-widget:active {
        border: 1px solid rgba(0, 0, 0, 0.4);
        background-color: rgba(0, 0, 0, 0.05);
        box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);
    }

    /**
    * Dark version for fold widgets
    */

    .ace_dark .ace_fold-widget {
        background-image: url("src/components/style/main-12.png");
    }

    .ace_dark .ace_fold-widget.ace_end {
        background-image: url("src/components/style/main-13.png");
    }

    .ace_dark .ace_fold-widget.ace_closed {
        background-image: url("src/components/style/main-14.png");
    }

    .ace_dark .ace_fold-widget:hover {
        box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);
        background-color: rgba(255, 255, 255, 0.1);
    }

    .ace_dark .ace_fold-widget:active {
        box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);
    }

    .ace_inline_button {
        border: 1px solid lightgray;
        display: inline-block;
        margin: -1px 8px;
        padding: 0 5px;
        pointer-events: auto;
        cursor: pointer;
    }

    .ace_inline_button:hover {
        border-color: gray;
        background: rgba(200, 200, 200, 0.2);
        display: inline-block;
        pointer-events: auto;
    }

    .ace_fold-widget.ace_invalid {
        background-color: #FFB4B4;
        border-color: #DE5555;
    }

    .ace_fade-fold-widgets .ace_fold-widget {
        transition: opacity 0.4s ease 0.05s;
        opacity: 0;
    }

    .ace_fade-fold-widgets:hover .ace_fold-widget {
        transition: opacity 0.05s ease 0.05s;
        opacity: 1;
    }

    .ace_underline {
        text-decoration: underline;
    }

    .ace_bold {
        font-weight: bold;
    }

    .ace_nobold .ace_bold {
        font-weight: normal;
    }

    .ace_italic {
        font-style: italic;
    }

    .ace_error-marker {
        background-color: rgba(255, 0, 0, 0.2);
        position: absolute;
        z-index: 9;
    }

    .ace_highlight-marker {
        background-color: rgba(255, 255, 0, 0.2);
        position: absolute;
        z-index: 8;
    }

    .ace_mobile-menu {
        position: absolute;
        line-height: 1.5;
        border-radius: 4px;
        -ms-user-select: none;
        -moz-user-select: none;
        -webkit-user-select: none;
        user-select: none;
        background: white;
        box-shadow: 1px 3px 2px grey;
        border: 1px solid #dcdcdc;
        color: black;
    }

    .ace_dark > .ace_mobile-menu {
        background: #333;
        color: #ccc;
        box-shadow: 1px 3px 2px grey;
        border: 1px solid #444;
    }

    .ace_mobile-button {
        padding: 2px;
        cursor: pointer;
        overflow: hidden;
    }

    .ace_mobile-button:hover {
        background-color: #eee;
        opacity: 1;
    }

    .ace_mobile-button:active {
        background-color: #ddd;
    }

    .ace_placeholder {
        font-family: arial;
        transform: scale(0.9);
        transform-origin: left;
        white-space: pre;
        opacity: 0.7;
        margin: 0 10px;
    }

    .ace_ghost_text {
        opacity: 0.5;
        font-style: italic;
        white-space: pre;
    }

    /*ace-tm*/

    .ace-tm .ace_gutter {
        background: #f0f0f0;
        color: #333;
    }

    .ace-tm .ace_print-margin {
        width: 1px;
        background: #e8e8e8;
    }

    .ace-tm .ace_fold {
        background-color: #6B72E6;
    }

    .ace-tm {
        background-color: #FFFFFF;
        color: black;
    }

    .ace-tm .ace_cursor {
        color: black;
    }

    .ace-tm .ace_invisible {
        color: rgb(191, 191, 191);
    }

    .ace-tm .ace_storage,
    .ace-tm .ace_keyword {
        color: blue;
    }

    .ace-tm .ace_constant {
        color: rgb(197, 6, 11);
    }

    .ace-tm .ace_constant.ace_buildin {
        color: rgb(88, 72, 246);
    }

    .ace-tm .ace_constant.ace_language {
        color: rgb(88, 92, 246);
    }

    .ace-tm .ace_constant.ace_library {
        color: rgb(6, 150, 14);
    }

    .ace-tm .ace_invalid {
        background-color: rgba(255, 0, 0, 0.1);
        color: red;
    }

    .ace-tm .ace_support.ace_function {
        color: rgb(60, 76, 114);
    }

    .ace-tm .ace_support.ace_constant {
        color: rgb(6, 150, 14);
    }

    .ace-tm .ace_support.ace_type,
    .ace-tm .ace_support.ace_class {
        color: rgb(109, 121, 222);
    }

    .ace-tm .ace_keyword.ace_operator {
        color: rgb(104, 118, 135);
    }

    .ace-tm .ace_string {
        color: rgb(3, 106, 7);
    }

    .ace-tm .ace_comment {
        color: rgb(76, 136, 107);
    }

    .ace-tm .ace_comment.ace_doc {
        color: rgb(0, 102, 255);
    }

    .ace-tm .ace_comment.ace_doc.ace_tag {
        color: rgb(128, 159, 191);
    }

    .ace-tm .ace_constant.ace_numeric {
        color: rgb(0, 0, 205);
    }

    .ace-tm .ace_variable {
        color: rgb(49, 132, 149);
    }

    .ace-tm .ace_xml-pe {
        color: rgb(104, 104, 91);
    }

    .ace-tm .ace_entity.ace_name.ace_function {
        color: #0000A2;
    }

    .ace-tm .ace_heading {
        color: rgb(12, 7, 255);
    }

    .ace-tm .ace_list {
        color: rgb(185, 6, 144);
    }

    .ace-tm .ace_meta.ace_tag {
        color: rgb(0, 22, 142);
    }

    .ace-tm .ace_string.ace_regex {
        color: rgb(255, 0, 0)
    }

    .ace-tm .ace_marker-layer .ace_selection {
        background: rgb(181, 213, 255);
    }

    .ace-tm.ace_multiselect .ace_selection.ace_start {
        box-shadow: 0 0 3px 0px white;
    }

    .ace-tm .ace_marker-layer .ace_step {
        background: rgb(252, 255, 0);
    }

    .ace-tm .ace_marker-layer .ace_stack {
        background: rgb(164, 229, 101);
    }

    .ace-tm .ace_marker-layer .ace_bracket {
        margin: -1px 0 0 -1px;
        border: 1px solid rgb(192, 192, 192);
    }

    .ace-tm .ace_marker-layer .ace_active-line {
        background: rgba(0, 0, 0, 0.07);
    }

    .ace-tm .ace_gutter-active-line {
        background-color: #dcdcdc;
    }

    .ace-tm .ace_marker-layer .ace_selected-word {
        background: rgb(250, 250, 255);
        border: 1px solid rgb(200, 200, 250);
    }

    .ace-tm .ace_indent-guide {
        background: url("src/components/style/main-15.png") right repeat-y;
    }

    .ace-tm .ace_indent-guide-active {
        background: url("src/components/style/main-16.png") right repeat-y;
    }

    /*error_marker.css*/

    .error_widget_wrapper {
        background: inherit;
        color: inherit;
        border: none
    }

    .error_widget {
        border-top: solid 2px;
        border-bottom: solid 2px;
        margin: 5px 0;
        padding: 10px 40px;
        white-space: pre-wrap;
    }

    .error_widget.ace_error, .error_widget_arrow.ace_error {
        border-color: #ff5a5a
    }

    .error_widget.ace_warning, .error_widget_arrow.ace_warning {
        border-color: #F1D817
    }

    .error_widget.ace_info, .error_widget_arrow.ace_info {
        border-color: #5a5a5a
    }

    .error_widget.ace_ok, .error_widget_arrow.ace_ok {
        border-color: #5aaa5a
    }

    .error_widget_arrow {
        position: absolute;
        border: solid 5px;
        border-top-color: transparent !important;
        border-right-color: transparent !important;
        border-left-color: transparent !important;
        top: -5px;
    }

    /*codelense.css*/

    .ace_codeLens {
        position: absolute;
        color: #aaa;
        font-size: 88%;
        background: inherit;
        width: 100%;
        display: flex;
        align-items: flex-end;
        pointer-events: none;
    }

    .ace_codeLens > a {
        cursor: pointer;
        pointer-events: auto;
    }

    .ace_codeLens > a:hover {
        color: #0000ff;
        text-decoration: underline;
    }

    .ace_dark > .ace_codeLens > a:hover {
        color: #4e94ce;
    }

    /*snippets.css*/

    .ace_snippet-marker {
        -moz-box-sizing: border-box;
        box-sizing: border-box;
        background: rgba(194, 193, 208, 0.09);
        border: 1px dotted rgba(211, 208, 235, 0.62);
        position: absolute;
    }

    /*autocompletion.css*/

    .ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {
        background-color: #CAD6FA;
        z-index: 1;
    }

    .ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {
        background-color: #3a674e;
    }

    .ace_editor.ace_autocomplete .ace_line-hover {
        border: 1px solid #abbffe;
        margin-top: -1px;
        background: rgba(233, 233, 253, 0.4);
        position: absolute;
        z-index: 2;
    }

    .ace_dark.ace_editor.ace_autocomplete .ace_line-hover {
        border: 1px solid rgba(109, 150, 13, 0.8);
        background: rgba(58, 103, 78, 0.62);
    }

    .ace_completion-meta {
        opacity: 0.5;
        margin: 0 0.9em;
    }

    .ace_completion-message {
        color: blue;
    }

    .ace_editor.ace_autocomplete .ace_completion-highlight {
        color: #2d69c7;
    }

    .ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight {
        color: #93ca12;
    }

    .ace_editor.ace_autocomplete {
        width: 300px;
        z-index: 200000;
        border: 1px lightgray solid;
        position: fixed;
        box-shadow: 2px 3px 5px rgba(0, 0, 0, .2);
        line-height: 1.4;
        background: #fefefe;
        color: #111;
    }

    .ace_dark.ace_editor.ace_autocomplete {
        border: 1px #484747 solid;
        box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);
        line-height: 1.4;
        background: #25282c;
        color: #c1c1c1;
    }

    .ace_autocomplete_right .ace_text-layer {
        width: calc(100% - 8px);
    }

    .ace_autocomplete_right .ace_line {
        display: flex;
    }

    .ace_autocomplete_right .ace_completion-meta {
        flex: 1;
        text-align: right;
    }

    /*inlinetooltip.css*/

    .ace_inline_autocomplete_tooltip {
        display: inline-block;
    }

    .inline_autocomplete_tooltip_entry {
        display: inline-block;
        padding: 0 5px;
    }

    .inline_autocomplete_tooltip_button {
        display: inline-block;
        cursor: pointer;
        padding: 5px;
    }

    .inline_autocomplete_tooltip_button:hover {
        background-color: rgba(0, 0, 0, 0.1);
    }

    div.inline_autocomplete_tooltip_button_disabled {
        display: inline-block;
        padding: 5px;
        cursor: default;
        color: #777;
    }

    /*settings_menu.css*/

    #ace_settingsmenu, #kbshortcutmenu {
        background-color: #F7F7F7;
        color: black;
        box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);
        padding: 1em 0.5em 2em 1em;
        overflow: auto;
        position: absolute;
        margin: 0;
        bottom: 0;
        right: 0;
        top: 0;
        z-index: 9991;
        cursor: default;
    }

    .ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {
        box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);
        background-color: rgba(255, 255, 255, 0.6);
        color: black;
    }

    .ace_optionsMenuEntry:hover {
        background-color: rgba(100, 100, 100, 0.1);
        transition: all 0.3s
    }

    .ace_closeButton {
        background: rgba(245, 146, 146, 0.5);
        border: 1px solid #F48A8A;
        border-radius: 50%;
        padding: 7px;
        position: absolute;
        right: -8px;
        top: -8px;
        z-index: 100000;
    }

    .ace_closeButton {
        background: rgba(245, 146, 146, 0.9);
    }

    .ace_optionsMenuKey {
        color: darkslateblue;
        font-weight: bold;
    }

    .ace_optionsMenuCommand {
        color: darkcyan;
        font-weight: normal;
    }

    .ace_optionsMenuEntry input, .ace_optionsMenuEntry button {
        vertical-align: middle;
    }

    .ace_optionsMenuEntry button[ace_selected_button=true] {
        background: #e7e7e7;
        box-shadow: 1px 0px 2px 0px #adadad inset;
        border-color: #adadad;
    }

    .ace_optionsMenuEntry button {
        background: white;
        border: 1px solid lightgray;
        margin: 0px;
    }

    .ace_optionsMenuEntry button:hover {
        background: #f0f0f0;
    }

    /*promtp.css*/

    .ace_prompt_container {
        max-width: 603px;
        width: 100%;
        margin: 20px auto;
        padding: 3px;
        background: white;
        border-radius: 2px;
        box-shadow: 0px 2px 3px 0px #555;
    }

    /*ace_searchbox*/
    /* ------------------------------------------------------------------------------------------
    * Editor Search Form
    * --------------------------------------------------------------------------------------- */

    .ace_search {
        background-color: #ddd;
        color: #666;
        border: 1px solid #cbcbcb;
        border-top: 0 none;
        overflow: hidden;
        margin: 0;
        padding: 4px 6px 0 4px;
        position: absolute;
        top: 0;
        z-index: 99;
        white-space: normal;
    }

    .ace_search.left {
        border-left: 0 none;
        border-radius: 0px 0px 5px 0px;
        left: 0;
    }

    .ace_search.right {
        border-radius: 0px 0px 0px 5px;
        border-right: 0 none;
        right: 0;
    }

    .ace_search_form, .ace_replace_form {
        margin: 0 20px 4px 0;
        overflow: hidden;
        line-height: 1.9;
    }

    .ace_replace_form {
        margin-right: 0;
    }

    .ace_search_form.ace_nomatch {
        outline: 1px solid red;
    }

    .ace_search_field {
        border-radius: 3px 0 0 3px;
        background-color: white;
        color: black;
        border: 1px solid #cbcbcb;
        border-right: 0 none;
        outline: 0;
        padding: 0;
        font-size: inherit;
        margin: 0;
        line-height: inherit;
        padding: 0 6px;
        min-width: 17em;
        vertical-align: top;
        min-height: 1.8em;
        box-sizing: content-box;
    }

    .ace_searchbtn {
        border: 1px solid #cbcbcb;
        line-height: inherit;
        display: inline-block;
        padding: 0 6px;
        background: #fff;
        border-right: 0 none;
        border-left: 1px solid #dcdcdc;
        cursor: pointer;
        margin: 0;
        position: relative;
        color: #666;
    }

    .ace_searchbtn:last-child {
        border-radius: 0 3px 3px 0;
        border-right: 1px solid #cbcbcb;
    }

    .ace_searchbtn:disabled {
        background: none;
        cursor: default;
    }

    .ace_searchbtn:hover {
        background-color: #eef1f6;
    }

    .ace_searchbtn.prev, .ace_searchbtn.next {
        padding: 0px 0.7em
    }

    .ace_searchbtn.prev:after, .ace_searchbtn.next:after {
        content: "";
        border: solid 2px #888;
        width: 0.5em;
        height: 0.5em;
        border-width: 2px 0 0 2px;
        display: inline-block;
        transform: rotate(-45deg);
    }

    .ace_searchbtn.next:after {
        border-width: 0 2px 2px 0;
    }

    .ace_searchbtn_close {
        background: url("src/components/style/main-17.png") no-repeat 50% 0;
        border-radius: 50%;
        border: 0 none;
        color: #656565;
        cursor: pointer;
        font: 16px/16px Arial;
        padding: 0;
        height: 14px;
        width: 14px;
        top: 9px;
        right: 7px;
        position: absolute;
    }

    .ace_searchbtn_close:hover {
        background-color: #656565;
        background-position: 50% 100%;
        color: white;
    }

    .ace_button {
        margin-left: 2px;
        cursor: pointer;
        -webkit-user-select: none;
        -moz-user-select: none;
        -o-user-select: none;
        -ms-user-select: none;
        user-select: none;
        overflow: hidden;
        opacity: 0.7;
        border: 1px solid rgba(100, 100, 100, 0.23);
        padding: 1px;
        box-sizing: border-box !important;
        color: black;
    }

    .ace_button:hover {
        background-color: #eee;
        opacity: 1;
    }

    .ace_button:active {
        background-color: #ddd;
    }

    .ace_button.checked {
        border-color: #3399ff;
        opacity: 1;
    }

    .ace_search_options {
        margin-bottom: 3px;
        text-align: right;
        -webkit-user-select: none;
        -moz-user-select: none;
        -o-user-select: none;
        -ms-user-select: none;
        user-select: none;
        clear: both;
    }

    .ace_search_counter {
        float: left;
        font-family: arial;
        padding: 0 8px;
    }

    /*incremental-occur-highlighting*/

    .ace_occur-highlight {
        border-radius: 4px;
        background-color: rgba(87, 255, 8, 0.25);
        position: absolute;
        z-index: 4;
        box-sizing: border-box;
        box-shadow: 0 0 4px rgb(91, 255, 50);
    }

    .ace_dark .ace_occur-highlight {
        background-color: rgb(80, 140, 85);
        box-shadow: 0 0 4px rgb(60, 120, 70);
    }

    /*incremental-search-highlighting*/

    .ace_marker-layer .ace_isearch-result {
        position: absolute;
        z-index: 6;
        box-sizing: border-box;
    }

    div.ace_isearch-result {
        border-radius: 4px;
        background-color: rgba(255, 200, 0, 0.5);
        box-shadow: 0 0 4px rgb(255, 200, 0);
    }

    .ace_dark div.ace_isearch-result {
        background-color: rgb(100, 110, 160);
        box-shadow: 0 0 4px rgb(80, 90, 140);
    }

    /*emacsMode*/

    .emacs-mode .ace_cursor {
        border: 1px rgba(50, 250, 50, 0.8) solid !important;
        box-sizing: border-box !important;
        background-color: rgba(0, 250, 0, 0.9);
        opacity: 0.5;
    }

    .emacs-mode .ace_hidden-cursors .ace_cursor {
        opacity: 1;
        background-color: transparent;
    }

    .emacs-mode .ace_overwrite-cursors .ace_cursor {
        opacity: 1;
        background-color: transparent;
        border-width: 0 0 2px 2px !important;
    }

    .emacs-mode .ace_text-layer {
        z-index: 4
    }

    .emacs-mode .ace_cursor-layer {
        z-index: 2
    }

    /*vimMode*/

    .normal-mode .ace_cursor {
        border: none;
        background-color: rgba(255, 0, 0, 0.5);
    }

    .normal-mode .ace_hidden-cursors .ace_cursor {
        background-color: transparent;
        border: 1px solid red;
        opacity: 0.7
    }

    .ace_dialog {
        position: absolute;
        left: 0;
        right: 0;
        background: inherit;
        z-index: 15;
        padding: .1em .8em;
        overflow: hidden;
        color: inherit;
    }

    .ace_dialog-top {
        border-bottom: 1px solid #444;
        top: 0;
    }

    .ace_dialog-bottom {
        border-top: 1px solid #444;
        bottom: 0;
    }

    .ace_dialog input {
        border: none;
        outline: none;
        background: transparent;
        width: 20em;
        color: inherit;
        font-family: monospace;
    }
}


:root::before,
:host::before {
    --_lumo-jmix-code-editor-inject: 1;
    --_lumo-jmix-code-editor-inject-modules:
            lumo_mixins_field-label,
            lumo_mixins_field-required,
            lumo_mixins_field-error-message,
            lumo_mixins_field-helper,
            lumo_mixins_field-base,
            lumo_components_jmix-code-editor;
}

jmix-code-editor[readonly][has-error-message]::part(error-message),
jmix-code-editor[disabled][has-error-message]::part(error-message) {
    display:none;
}

jmix-code-editor[readonly][invalid],
jmix-code-editor[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
}

/* jmix-lumo/components/jmix-combo-box-picker.css */
:root::before,
:host::before {
    --_lumo-jmix-combo-box-picker-inject: 1;
    --_lumo-jmix-combo-box-picker-inject-modules:
    lumo_mixins_field-label,
    lumo_mixins_field-required,
    lumo_mixins_field-error-message,
    lumo_mixins_field-button,
    lumo_mixins_field-helper,
    lumo_mixins_field-base,
    lumo_components_combo-box,
    lumo_mixins_picker-field-actions;
}

jmix-combo-box-picker[opened] {
    pointer-events: auto;
}

jmix-combo-box-picker[readonly][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: transparent;
    --vaadin-input-field-invalid-hover-highlight: transparent;
}

jmix-combo-box-picker[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: var(--lumo-contrast-5pct);
}

jmix-combo-box-picker[disabled][has-error-message]::part(error-message),
jmix-combo-box-picker[readonly][has-error-message]::part(error-message) {
    display: none;
}

/* jmix-lumo/components/jmix-date-range-picker.css */
.jmix-date-range-picker-root {
    gap: var(--lumo-space-xs);
}

/* jmix-lumo/components/jmix-value-picker.css */
:root::before,
:host::before {
    --_lumo-jmix-value-picker-inject: 1;
    --_lumo-jmix-value-picker-inject-modules:
            lumo_mixins_field-label,
            lumo_mixins_field-required,
            lumo_mixins_field-error-message,
            lumo_mixins_field-helper,
            lumo_mixins_field-base,
            lumo_mixins_picker-field-actions;
}

jmix-value-picker[readonly][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: transparent;
    --vaadin-input-field-invalid-hover-highlight: transparent;
}

jmix-value-picker[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: var(--lumo-contrast-5pct);
}

/* todo: create a mixin */
jmix-value-picker[disabled][has-error-message]::part(error-message),
jmix-value-picker[readonly][has-error-message]::part(error-message) {
    display: none;
}

/* jmix-lumo/components/jmix-value-picker-button.css */
/* jmix-lumo/src/components/jmix-value-picker-button.css */
@media lumo_components_jmix-value-picker-button {

    :host {
        display: inline-block;
        position: relative;
        outline: none;
        white-space: nowrap;
        -webkit-user-select: none;
        user-select: none;
        /* Sizing */
        --lumo-button-size: var(--lumo-size-s);
        min-width: var(--lumo-button-size);
        height: var(--lumo-button-size);
        box-sizing: border-box;
        /* Style */
        font-family: var(--lumo-font-family);
        font-size: var(--vaadin-button-font-size, var(--lumo-font-size-m));
        font-weight: var(--vaadin-button-font-weight, 500);
        color: var(--_lumo-button-text-color);
        background: var(--_lumo-button-background);
        border: var(--vaadin-button-border, none);
        border-radius: var(--vaadin-button-border-radius, var(--lumo-border-radius-m));
        cursor: var(--lumo-clickable-cursor);
        -webkit-tap-highlight-color: transparent;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        flex-shrink: 0;
        --_button-size: var(--vaadin-button-height, var(--lumo-button-size));
        --_focus-ring-color: var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
        --_focus-ring-width: var(--vaadin-focus-ring-width, 2px);
        /* Used by notification */
        --_lumo-button-background: var(--vaadin-button-background, var(--lumo-contrast-5pct));
        --_lumo-button-text-color: var(--vaadin-button-text-color, var(--lumo-primary-text-color));
        /* Allow controlling these from the host (inherited by the inner container */
        align-items: center;
        justify-content: center;
        text-align: center;
    }

    :host([hidden]) {
        display: none !important;
    }

    .value-picker-button-container {
        display: inline-flex;
        align-items: inherit;
        justify-content: inherit;
        text-align: inherit;
        width: 100%;
        height: 100%;
        min-height: inherit;
        text-shadow: inherit;
    }

    [part='icon'] {
        flex: none;
    }

    /* Set only for the internal parts so we don’t affect the host vertical alignment */
    [part='icon'] {
        line-height: var(--lumo-line-height-xs);
    }

    /* For interaction states */
    :host::before,
    :host::after {
        content: '';
        /* We rely on the host always being relative */
        position: absolute;
        z-index: 1;
        inset: 0;
        background-color: currentColor;
        border-radius: inherit;
        opacity: 0;
        pointer-events: none;
    }

    /* Hover */
    @media (any-hover: hover) {
        :host(:hover)::before {
            opacity: 0.02;
        }
    }

    /* Active */
    :host::after {
        transition: opacity 1.4s, transform 0.1s;
        filter: blur(8px);
    }

    :host([active])::before {
        opacity: 0.05;
        transition-duration: 0s;
    }

    :host([active])::after {
        opacity: 0.1;
        transition-duration: 0s, 0s;
        transform: scale(0);
    }

    /* Keyboard focus */
    :host([focus-ring]) {
        box-shadow: 0 0 0 calc(1px * var(--_focus-ring-gap-on, 0)) var(--_focus-ring-gap-color, var(--lumo-base-color)),
        0 0 0 calc(var(--_focus-ring-width) + 1px * var(--_focus-ring-gap-on, 0)) var(--_focus-ring-color);
    }

    /* Disabled state. Keep selectors after other color variants. */
    :host([disabled]) {
        color: var(--lumo-disabled-text-color);
        pointer-events: var(--_vaadin-button-disabled-pointer-events, none);
        cursor: not-allowed;
    }

    /* Icons */
    [part] ::slotted(vaadin-icon) {
        width: var(--lumo-icon-size-m);
        height: var(--lumo-icon-size-m);
    }

    [part] ::slotted(vaadin-icon[icon^='vaadin:']) {
        padding: 0.25em;
        box-sizing: border-box !important;
    }

    @media (forced-colors: active) {
        :host {
            outline: 1px solid;
            outline-offset: -1px;
        }

        :host([focused]) {
            outline-width: 2px;
        }

        :host([disabled]) {
            outline-color: GrayText;
        }
    }
}


:root::before,
:host::before {
    --_lumo-jmix-value-picker-button-inject: 1;
    --_lumo-jmix-value-picker-button-inject-modules: lumo_components_jmix-value-picker-button;
}

/* jmix-lumo/components/jmix-multi-select-combo-box-picker.css */
:root::before,
:host::before {
    --_lumo-jmix-multi-select-combo-box-picker-inject: 1;
    --_lumo-jmix-multi-select-combo-box-picker-inject-modules:
    lumo_mixins_field-label,
    lumo_mixins_field-required,
    lumo_mixins_field-error-message,
    lumo_mixins_field-button,
    lumo_mixins_field-helper,
    lumo_mixins_field-base,
    lumo_components_multi-select-combo-box,
    lumo_mixins_picker-field-actions;
}

jmix-multi-select-combo-box-picker[opened] {
    pointer-events: auto;
}

jmix-multi-select-combo-box-picker[readonly][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: transparent;
    --vaadin-input-field-invalid-hover-highlight: transparent;
}

jmix-multi-select-combo-box-picker[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: var(--lumo-contrast-5pct);
}

jmix-multi-select-combo-box-picker[disabled][has-error-message]::part(error-message),
jmix-multi-select-combo-box-picker[readonly][has-error-message]::part(error-message) {
    display: none;
}

/* jmix-lumo/components/jmix-twin-column.css */
/* jmix-lumo/src/components/jmix-twin-column.css */
@media lumo_components_jmix-twin-column {
    .jmix-twin-column-container {
        display: flex;
        flex-direction: column;
        width: 100%;
        height: 100%;
        align-items: flex-start;
        box-sizing: border-box;
    }

    .jmix-twin-column-input-container {
        height: 100%;
        overflow-y: auto;
        overflow-x: auto;
        display: grid;
        column-gap: var(--lumo-space-s);
        grid-template-columns: 1fr 0fr 1fr;
        grid-template-rows: 0fr 1fr;
    }

    :host([has-width]) .jmix-twin-column-input-container {
        width: 100%;
    }

    ::slotted([slot="items-label"]) {
        grid-row: 1;
        grid-column: 1;
    }

    ::slotted([slot="selected-items-label"]) {
        grid-row: 1;
        grid-column: 3;
    }

    ::slotted([slot="items"]) {
        grid-row: 2;
        grid-column: 1;
        overflow-y: auto;
    }

    ::slotted([slot="actions"]) {
        grid-row: 2;
        grid-column: 2;
    }

    ::slotted([slot="selected-items"]) {
        grid-row: 2;
        grid-column: 3;
        overflow-y: auto;
    }

    :host(:not([has-label])) [part='label'] {
        display: none;
    }

    :host(:not([has-width])) ::slotted([slot$="items"]) {
        min-width: var(--jmix-twin-column-column-min-width, 15em);
        width: var(--jmix-twin-column-column-width, 15em);
        max-width: var(--jmix-twin-column-column-max-width, 15em);
    }

    :host(:not([has-height])) ::slotted([slot$="items"]) {
        min-height: var(--jmix-twin-column-column-min-height, 20em);
        height: var(--jmix-twin-column-column-height, 20em);
        max-height: var(--jmix-twin-column-column-max-height, 20em);
    }

    :host(:not([has-width])) ::slotted([slot$='items-label']) {
        min-width: var(--jmix-twin-column-column-min-width, 15em);
        width: var(--jmix-twin-column-column-width, 15em);
        max-width: var(--jmix-twin-column-column-max-width, 15em);
    }

    :host(:not([has-height])) ::slotted([slot="actions"]) {
        min-height: var(--jmix-twin-column-column-min-height, 20em);
        height: var(--jmix-twin-column-column-height, 20em);
        max-height: var(--jmix-twin-column-column-max-height, 20em);
    }

    ::slotted([slot$='items-label']) {
        color: var(--lumo-secondary-text-color);
        font-weight: 500;
        line-height: 1;
        font-size: var(--lumo-font-size-s);
        padding-bottom: var(--lumo-space-xs);
    }

    :host([disabled]) ::slotted([slot$='items-label']) {
        color: var(--lumo-disabled-text-color);
    }

    :host([invalid]) {
        --vaadin-input-field-border-color: var(--vaadin-input-field-error-color, var(--lumo-error-color));
    }

    ::slotted(vaadin-list-box) {
        border: var(--vaadin-input-field-border-width, 1px) solid var(--vaadin-input-field-border-color, var(--lumo-contrast-10pct));
        border-radius: 0;
    }

    :host([theme~="no-border"]) ::slotted(vaadin-list-box) {
        border-width: 0;
    }

    ::slotted([slot="actions"]) {
        display: flex;
        flex-direction: column;
        gap: var(--lumo-space-s);
    }
}


:root::before,
:host::before {
    --_lumo-jmix-twin-column-inject: 1;
    --_lumo-jmix-twin-column-inject-modules:
            lumo_mixins_field-label,
            lumo_mixins_field-required,
            lumo_mixins_field-error-message,
            lumo_mixins_field-helper,
            lumo_components_jmix-twin-column;
}

jmix-twin-column vaadin-item {
    border-bottom: 1px solid var(--lumo-contrast-10pct);
    border-radius: 0;
    padding: var(--lumo-space-xs) var(--lumo-space-m);
}

jmix-twin-column vaadin-item::part(checkmark) {
    display: none;
}

jmix-twin-column vaadin-item[selected] {
    background-color: var(--lumo-primary-color-10pct);
}

jmix-twin-column vaadin-item:not([selected]):hover {
    background-color: transparent;
}

jmix-twin-column[theme~="no-border"] vaadin-list-box  {
    border-width: 0;
}

jmix-twin-column[theme~="no-row-border"] vaadin-item  {
    border-width: 0;
}

jmix-twin-column[theme~="checkmarks"] vaadin-item::part(checkmark)  {
    display: block;
}

jmix-twin-column[theme~="checkmarks"] vaadin-item {
    padding: var(--lumo-space-xs) var(--lumo-space-m) var(--lumo-space-xs) var(--lumo-space-xs);
}

jmix-twin-column[theme~="checkmarks"] vaadin-item[selected] {
    background-color: transparent;
}

jmix-twin-column[theme~="checkmarks"] vaadin-item:hover {
    background-color: var(--lumo-primary-color-10pct);
}

jmix-twin-column vaadin-item:nth-last-of-type(1) {
    border-bottom: 0px;
}

jmix-twin-column vaadin-button {
    margin: 0;
}

jmix-twin-column[theme~="no-space-between-actions"] .jmix-twin-column-actions-panel {
    gap: 0;
}

jmix-twin-column[theme~="no-space-between-actions"] vaadin-button:first-child {
    border-top-left-radius: var(--lumo-border-radius-m);
    border-top-right-radius: var(--lumo-border-radius-m);
}

jmix-twin-column[theme~="no-space-between-actions"] vaadin-button {
    border-radius: 0;
}

jmix-twin-column[theme~="no-space-between-actions"] vaadin-button:last-child {
    border-bottom-left-radius: var(--lumo-border-radius-m);
    border-bottom-right-radius: var(--lumo-border-radius-m);
}

jmix-twin-column vaadin-button vaadin-icon[dir="rtl"] {
    rotate: 180deg;
}

@media (forced-colors: active) {
    jmix-twin-column vaadin-item::part(checkmark)  {
        display: block;
    }

    jmix-twin-column vaadin-item {
        padding: var(--lumo-space-xs) var(--lumo-space-m) var(--lumo-space-xs) var(--lumo-space-xs);
    }
}

/* jmix-lumo/components/jmix-upload-field.css */
/* jmix-lumo/src/components/jmix-upload-field.css */
@media lumo_components_jmix-upload-field {
    [part='input-field'] {
        background-color: transparent;
        padding: 0;
        cursor: auto;
    }

    [part='input-field']:after {
        border: 0;
    }

    :host::before {
        display: inline-flex;
    }

    /*
     * Use "auto" width instead of default 12em, because upload field
     * with visible file name is not fit in.
     */
    [class$='container'] {
        width: var(--jmix-upload-field-default-width, var(--vaadin-field-default-width, auto));
    }

    [part='input-field'] {
        --vaadin-input-field-hover-highlight-opacity: 0;
    }

    :host(:hover:not([readonly]):not([focused])) [part='input-field']::after {
        opacity: 0;
    }

    /*
     * The input field is a vaadin-upload-drop-zone, which paints its own dragover
     * overlay (a translucent ::after). Suppress it so the dashed outline below is
     * the only highlight. The element's own dragover attribute is not used for the
     * highlight either: it sticks when the pointer leaves through a child, so the
     * host attribute driven by the field's depth counter is what keys the outline.
     */
    [part='input-field'][dragover]::after {
        content: none;
    }

    :host([dragover]) [part='input-field'] {
        --_focus-ring-color: var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
        --_focus-ring-width: var(--vaadin-focus-ring-width, 2px);

        outline: var(--_focus-ring-width) dashed var(--_focus-ring-color);
        border-radius: var(--lumo-border-radius-m);
    }

    ::slotted(:not([slot$='fix'])) {
        padding: 0;
        --_lumo-text-field-overflow-mask-image: 0;
        -webkit-mask-image: 0;
        mask-image: 0;
    }

    ::slotted([slot='input']) {
        align-items: center;
        display: flex;
        gap: var(--lumo-space-s);
    }
}


:root::before,
:host::before {
    --_lumo-jmix-upload-field-inject: 1;
    --_lumo-jmix-upload-field-inject-modules:
            lumo_mixins_field-label,
            lumo_mixins_field-required,
            lumo_mixins_field-error-message,
            lumo_mixins_field-helper,
            lumo_mixins_field-base,
            lumo_components_jmix-upload-field;
}

.jmix-upload-field-file-name.empty {
    color: var(--lumo-body-text-color);
}

.jmix-upload-field-clear {
    color: var(--vaadin-input-field-button-text-color, var(--lumo-contrast-60pct));
    cursor: var(--vaadin-clickable-cursor);

    border-radius: var(--vaadin-button-border-radius, var(--vaadin-radius-m));
}

/* Icon */

jmix-upload-field[disabled] .jmix-upload-field-clear {
    color: var(--vaadin-text-color-disabled);
    cursor: var(--vaadin-disabled-cursor);
}

.jmix-upload-field-clear:focus-visible {
    outline: 2px solid var(--lumo-primary-color-50pct);
    outline-offset: 1px;
}

/*.jmix-upload-field-clear:focus {
    outline: none;
    border-radius: var(--lumo-border-radius-s);
    box-shadow: 0 0 0 2px var(--lumo-primary-color-50pct);
}*/

.jmix-upload-field-clear::before {
    content: var(--lumo-icons-cross);
    font-family: 'lumo-icons';
    display: block;
}

.jmix-upload-field-clear:hover {
    color: var(--lumo-contrast-90pct);
}

@media (forced-colors: active) {
    .jmix-upload-field-clear {
        background: Canvas;
        border: 1px solid CanvasText;
    }
}

/* jmix-lumo/components/jmix-rich-text-editor.css */
/* Vaadin-Icons */

/* jmix-lumo/src/components/jmix-rich-text-editor.css */
@media lumo_components_jmix-rich-text-editor {
    :host {
        display: flex;
        box-sizing: content-box;

        font-family: inherit;
        font-size: inherit;
        line-height: inherit;
        -webkit-text-size-adjust: 100%;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;

        padding: var(--lumo-space-xs) 0;

        min-width: 32em;
        min-height: 18em;

        --_focus-ring-color: var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
        --_focus-ring-width: var(--vaadin-focus-ring-width, 2px);
    }

    :host:before {
        content: none;
    }

    :host([hidden]) {
        display: none !important;
    }

    :host([disabled]) {
        pointer-events: none;
        opacity: 0.5;
        -webkit-user-select: none;
        -moz-user-select: none;
        user-select: none;
    }

    :host(:not([has-label])) [part='label'] {
        display: none;
    }

    :host([disabled]) [part='label'] {
        color: var(--lumo-disabled-text-color);
        -webkit-text-fill-color: var(--lumo-disabled-text-color);
    }

    .jmix-rich-text-editor-wrapper {
        display: flex;
        flex-direction: column;
        min-height: 100%;
        max-height: 100%;
        flex: auto;
    }

    [part="editor"] {
        display: flex;
        flex-direction: column;
        flex: auto;
        height: 100%;
        overflow-y: auto;
    }

    /**
     * Label styles
     *
     * Can be replaced with packages/vaadin-lumo-styles/mixins/required-field.js import
     * after other required-field functionality is added
     */
    [part='label'] {
        align-self: flex-start;
        color: var(--vaadin-input-field-label-color, var(--lumo-secondary-text-color));
        font-weight: var(--vaadin-input-field-label-font-weight, 500);
        font-size: var(--vaadin-input-field-label-font-size, var(--lumo-font-size-s));
        margin-left: calc(var(--lumo-border-radius-m) / 4);
        transition: color 0.2s;
        line-height: 1;
        padding-right: 1em;
        padding-bottom: 0.5em;
        /* As a workaround for diacritics being cut off, add a top padding and a
        negative margin to compensate */
        padding-top: 0.25em;
        margin-top: -0.25em;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
        position: relative;
        max-width: 100%;
        box-sizing: border-box;
    }

    :host([focused]:not([readonly])) [part='label'] {
        color: var(--vaadin-input-field-focused-label-color, var(--lumo-primary-text-color));
    }

    :host(:hover:not([readonly]):not([focused])) [part='label'] {
        color: var(--vaadin-input-field-hovered-label-color, var(--lumo-body-text-color));
    }

    /* Touch device adjustment */
    @media (pointer: coarse) {
        :host(:hover:not([readonly]):not([focused])) [part='label'] {
            color: var(--vaadin-input-field-label-color, var(--lumo-secondary-text-color));
        }
    }

    :host([has-label]) {
        padding-top: var(--lumo-space-m);
    }

    /* RTL specific styles */
    :host([dir='rtl']) [part='label'] {
        margin-left: 0;
        margin-right: calc(var(--lumo-border-radius-m) / 4);
    }

    :host([dir='rtl']) [part='label'] {
        padding-left: 1em;
        padding-right: 0;
    }
}


:root::before,
:host::before {
    --_lumo-jmix-rich-text-editor-inject: 1;
    --_lumo-jmix-rich-text-editor-inject-modules:
            lumo_mixins_field-helper,
            lumo_components_jmix-rich-text-editor;
}

jmix-rich-text-editor {
    --vaadin-input-field-border-color: var(--lumo-contrast-20pct);
}

/* Toolbar */

jmix-rich-text-editor .jmix-rich-text-editor-toolbar {
    background-color: var(--lumo-contrast-5pct);
    padding: calc(var(--lumo-space-s) - 1px) var(--lumo-space-xs);
}

jmix-rich-text-editor .jmix-rich-text-editor-toolbar [class*='toolbar-button'] {
    padding: 0;
    font: inherit;
    line-height: 1;
    text-transform: none;
    background: transparent;
    border-color: transparent;
    position: relative;

    width: var(--lumo-size-m, 2em);
    height: var(--lumo-size-m, 2em);
    border-radius: var(--lumo-border-radius-m);
    color: var(--lumo-contrast-60pct);
    margin: 2px 1px;
    cursor: var(--lumo-clickable-cursor);
    transition: background-color 100ms, color 100ms;
}

jmix-rich-text-editor .jmix-rich-text-editor-toolbar [class*='toolbar-button']:hover {
    outline: none;
    background-color: var(--lumo-contrast-5pct);
    color: var(--lumo-contrast-80pct);
    box-shadow: none;
}

jmix-rich-text-editor .jmix-rich-text-editor-toolbar [class*='toolbar-button']:focus {
    outline: none;
    box-shadow: 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
}

jmix-rich-text-editor .jmix-rich-text-editor-toolbar [class*='toolbar-button']::before {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);

    font-family: var(--jmix-rte-icons-font-family, var(--jmix-font-icon-font-family));
    font-size: var(--lumo-icon-size-xs);
}

jmix-rich-text-editor .jmix-rich-text-editor-toolbar [class*='toolbar-button'].ql-active {
    background-color: var(--vaadin-selection-color, var(--lumo-primary-color));
    color: var(--lumo-primary-contrast-color);
    border-color: transparent;
}

jmix-rich-text-editor .jmix-rich-text-editor-toolbar [class*='toolbar-button']:active {
    background-color: var(--lumo-contrast-10pct);
    color: var(--lumo-contrast-90pct);
    border-color: transparent;
}

/* Theme variants */

/* No border */
jmix-rich-text-editor[theme~='no-border'] .jmix-rich-text-editor-toolbar {
    border-top: none;
}

jmix-rich-text-editor[theme~='no-border'] .jmix-rich-text-editor-toolbar {
    padding-top: var(--lumo-space-s);
    padding-bottom: var(--lumo-space-s);
}

/* Compact */
jmix-rich-text-editor[theme~='compact'] {
    min-height: calc(var(--lumo-size-m) * 6);
}

jmix-rich-text-editor[theme~='compact'] .jmix-rich-text-editor-toolbar {
    padding: var(--lumo-space-xs) 0;
}

jmix-rich-text-editor[theme~='compact'][theme~='no-border'] .jmix-rich-text-editor-toolbar {
    padding: calc(var(--lumo-space-xs) + 1px) 0;
}

jmix-rich-text-editor[theme~='compact'] [class*='toolbar-button'] {
    width: var(--lumo-size-s);
    height: var(--lumo-size-s);
}

jmix-rich-text-editor[theme~='compact'] [class*='toolbar-group'] {
    margin: 0 calc(var(--lumo-space-m) / 2 - 1px);
}

/* jmix-lumo/components/jmix-simple-pagination.css */
.buttons-panel .jmix-simple-pagination:not([slot]):last-child {
    margin-inline-start: auto
}

.jmix-simple-pagination {
    --_gap: var(--jmix-simple-pagination-gap, 0.3em);

    align-items: center;
    display: flex;
    gap: var(--_gap);
}

.jmix-simple-pagination-status-bar {
    margin: 0 var(--_gap);
    display: flex;
    gap: var(--_gap);
}

.jmix-simple-pagination .jmix-items-per-page {
    gap: var(--_gap);
}

.jmix-simple-pagination-total-count.link {
    color: var(--lumo-primary-text-color);
    cursor: pointer;
}

.jmix-simple-pagination-navigation-button {
    padding: 0;
    margin: 0;
    height: 1.5rem;
    min-width: 1.5rem;

    font-size: var(--lumo-font-size-s);
    --lumo-button-size: var(--lumo-size-s);
}

.jmix-simple-pagination-navigation-button vaadin-icon[dir='rtl'] {
    rotate: 180deg;
}

/* jmix-lumo/components/jmix-list-menu.css */
:where(:root),
:where(:host) {
  --jmix-list-menu-item-font-size: var(--lumo-font-size-s);
  --jmix-list-menu-item-font-weight: 500;
  --jmix-list-menu-item-line-height: var(--lumo-line-height-s);
}

.jmix-list-menu {
  color: var(--lumo-secondary-text-color);
  margin: 0;
  overflow: auto;
  padding: 0 var(--lumo-space-s);
  list-style-type: none;
}

.jmix-list-menu .jmix-menubar-item .menubar-list {
  margin: 0;
  margin-inline-start: var(--lumo-space-l);
  list-style-type: none;
  padding: 0;
}

.jmix-list-menu .jmix-menubar-item {
  padding: var(--lumo-space-s) 0;
  margin: 0;
}

.jmix-list-menu .jmix-menubar-item vaadin-details-summary {
  padding: var(--lumo-space-s);
}

.jmix-list-menu .jmix-menubar-item .jmix-menubar-summary-icon-container {
  display: flex;
  gap: var(--lumo-space-s);
  align-items: center;
}

.jmix-list-menu .jmix-menu-item .link-icon,
.jmix-list-menu .jmix-menubar-item .jmix-menubar-summary-icon-container .menubar-icon {
  width: var(--lumo-icon-size-s);
  height: var(--lumo-icon-size-s);
  flex-shrink: 0;
}

.jmix-list-menu .jmix-menu-item .prefix-component,
.jmix-list-menu .jmix-menubar-item .jmix-menubar-summary-icon-container .prefix-component {
  flex-shrink: 0;
}

.jmix-list-menu .jmix-menu-item vaadin-icon.prefix-component,
.jmix-list-menu .jmix-menubar-item .jmix-menubar-summary-icon-container vaadin-icon.prefix-component {
  width: var(--lumo-icon-size-s);
  height: var(--lumo-icon-size-s);
}

.jmix-list-menu .jmix-menu-item vaadin-icon.prefix-component[icon^='vaadin:'],
.jmix-list-menu .jmix-menubar-item .jmix-menubar-summary-icon-container vaadin-icon.prefix-component[icon^='vaadin:'] {
  padding: 0.125em;
  box-sizing: border-box;
}

.jmix-list-menu .jmix-menubar-item .menubar-summary {
  font-size: var(--lumo-font-size-s);
  white-space: nowrap;
  font-weight: bold;
  text-overflow: ellipsis;
  overflow: hidden;
}

.jmix-list-menu a.jmix-menu-item .suffix-component,
.jmix-list-menu .jmix-menubar-item .jmix-menubar-summary-icon-container .suffix-component {
  margin-inline-start: auto;
  flex-shrink: 0;
}

.jmix-list-menu a.jmix-menu-item {
  display: flex;
  gap: var(--lumo-space-s);
  padding: var(--lumo-space-s);
  text-decoration: none;
  color: inherit;
  cursor: pointer;
  align-items: center;
}

.jmix-list-menu vaadin-button.jmix-menu-item {
  --vaadin-button-background: transparent;

  display: flex;

  min-width: 0;
  height: auto;

  color: inherit;

  font-size: var(--jmix-list-menu-item-font-size);
  font-weight: var(--jmix-list-menu-item-font-weight);
  line-height: var(--jmix-list-menu-item-line-height);

  padding: var(--vaadin-padding-s);
  margin: 0;
}

.jmix-list-menu vaadin-button.jmix-menu-item::part(label) {
  display: inline-flex;

  line-height: inherit;
  overflow: visible;
  padding: 0;

  flex-grow: 1;
}

.jmix-list-menu vaadin-button.jmix-menu-item::part(prefix),
.jmix-list-menu vaadin-button.jmix-menu-item::part(suffix) {
  margin: 0;
}

.jmix-list-menu vaadin-button.jmix-menu-item .prefix-component {
  margin-inline-end: var(--lumo-space-s);
}

.jmix-list-menu vaadin-button.jmix-menu-item .suffix-component {
  margin-inline-start: var(--lumo-space-s);
}

.jmix-list-menu a.jmix-menu-item .link-text {
  font-size: var(--jmix-list-menu-item-font-size);
  font-weight: var(--jmix-list-menu-item-font-weight);
  line-height: var(--jmix-list-menu-item-line-height);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.jmix-list-menu a.jmix-menu-item[highlight] {
  color: var(--lumo-primary-text-color);
}

.jmix-list-menu a.jmix-menu-item[highlight] {
  background-color: var(--lumo-primary-color-10pct);
  border-radius: var(--lumo-border-radius-m);
}

.jmix-list-menu .jmix-menubar-item vaadin-details-summary::part(content) {
  display: flex;
  overflow: hidden;
  width: 100%;
  align-items: center;
}

.jmix-list-menu[theme~='toggle-reverse'] vaadin-details-summary {
  justify-content: space-between;
}

.jmix-list-menu[theme~='toggle-reverse'] vaadin-details-summary::part(toggle) {
  order: 1;
  margin-inline-end: 0;
}

@supports selector(:focus-visible) {
  .jmix-list-menu a.jmix-menu-item:focus-visible {
    border-radius: var(--lumo-border-radius-m);
    box-shadow: 0 0 0 var(--vaadin-focus-ring-width, 2px) var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
    outline: 0;
  }
}

@media (forced-colors: active) {
  .jmix-list-menu a.jmix-menu-item[highlight] {
    border: 1px solid CanvasText;
  }
}

/* jmix-lumo/components/jmix-user-indicator.css */
.jmix-user-indicator {
  overflow: hidden;
  text-align: center;
  text-overflow: ellipsis;
}

.jmix-user-indicator .jmix-user-indicator-label {
  white-space: nowrap;
}


/* jmix-lumo/components/jmix-items-per-page.css */
/* shared/src/components/jmix-items-per-page.css */
.jmix-items-per-page {
    align-items: center;
    display: flex;
    gap: var(--jmix-items-per-page-gap, 0.5em);
}

.jmix-items-per-page-select {
    width: var(--jmix-items-per-page-select-width, 6em);
}

/* jmix-lumo/components/jmix-dropdown-button.css */
vaadin-menu-bar[jmix-role='jmix-dropdown-button'],
vaadin-menu-bar[jmix-role|='jmix-combo-button'] {
    flex-shrink: 0;
}

vaadin-menu-bar[jmix-role='jmix-dropdown-button'] vaadin-menu-bar-item::part(content),
vaadin-menu-bar[jmix-role|='jmix-combo-button'] vaadin-menu-bar-item::part(content) {
    align-items: center;
    gap: var(--lumo-space-xs);
}

.jmix-dropdown-button-item-wrapper {
    display: flex;
    align-items: center;
    gap: var(--lumo-space-s);
}

vaadin-icon.jmix-dropdown-button-item-icon:not([icon^='lumo:']) {
    padding: var(--lumo-space-xs);
    box-sizing: border-box;
}

/* DropdownButton Styles */
vaadin-menu-bar[jmix-role='jmix-dropdown-button'] > vaadin-menu-bar-button {
    margin: var(--lumo-space-xs) calc(var(--lumo-space-xs) / 2);
}

/* ComboButton Styles */
vaadin-menu-bar[jmix-role='jmix-combo-button-icon'] > vaadin-menu-bar-button {
    margin-top: var(--lumo-space-xs);
    margin-bottom: var(--lumo-space-xs);
}

vaadin-menu-bar[jmix-role='jmix-combo-button-icon'] > vaadin-menu-bar-button:nth-last-of-type(2) {
    min-width: var(--lumo-button-size);
    padding-left: calc(var(--lumo-button-size) / 4);
    padding-right: calc(var(--lumo-button-size) / 4);
}

vaadin-menu-bar[jmix-role='jmix-dropdown-button'][theme~='small'] > vaadin-menu-bar-button > vaadin-menu-bar-item,
vaadin-menu-bar[jmix-role='jmix-combo-button-icon'][theme~='small'] > vaadin-menu-bar-button > vaadin-menu-bar-item {
    font-size: var(--lumo-font-size-s);
}

vaadin-menu-bar[jmix-role='jmix-dropdown-button'][theme~='large'] > vaadin-menu-bar-button > vaadin-menu-bar-item,
vaadin-menu-bar[jmix-role='jmix-combo-button-icon'][theme~='large'] > vaadin-menu-bar-button > vaadin-menu-bar-item {
    font-size: var(--lumo-font-size-l);
}

/* jmix-lumo/components/jmix-image.css */
/* shared/src/components/jmix-image.css */
img[theme~="fill"] {
    object-fit: fill;
}

img[theme~="contain"] {
    object-fit: contain;
}

img[theme~="cover"] {
    object-fit: cover;
}

img[theme~="scale-down"] {
    object-fit: scale-down;
}



/* jmix-lumo/components/jmix-generic-filter.css */
.jmix-generic-filter-configuration-detail {
    padding: var(--lumo-space-s);
}

/* jmix-lumo/components/jmix-property-filter.css */
.jmix-property-filter {
  gap: var(--lumo-space-s);
}

.jmix-property-filter .unary-field {
  width: 6em;
}

.jmix-property-filter .filter-label {
  white-space: nowrap;
}

/* jmix-lumo/components/jmix-group-filter.css */
.jmix-group-filter {
  border: 1px solid;
  border-color: var(--lumo-contrast-20pct);
  border-radius: var(--lumo-border-radius-l);
  margin-top: var(--lumo-space-s);
  margin-bottom: var(--lumo-space-s);
}

/* jmix-lumo/components/jmix-grid-column-visibility.css */
vaadin-menu-bar[jmix-role='jmix-grid-column-visibility'] {
    flex-shrink: 0;
}

vaadin-menu-bar[jmix-role='jmix-grid-column-visibility'] > vaadin-menu-bar-button {
    margin: var(--lumo-space-xs) 0;
}


/* jmix-lumo/components/jmix-grid-header-filter.css */
.jmix-grid-header-filter {
    display: inline-flex;
    gap: var(--lumo-space-xs);

    padding-inline-end: 2px;
    padding-block: 2px;
}

vaadin-button.jmix-grid-header-filter-filter-button {
    color: var(--lumo-tertiary-text-color);

    font-size: inherit;
    line-height: inherit;

    padding: 0px;
    margin: 0px;

    min-width: 0px;
    height: auto;

    --vaadin-button-background: transparent;
}

vaadin-button.jmix-grid-header-filter-filter-button::part(label) {
    line-height: inherit;
    overflow: visible;
    padding: 0px;
}

.jmix-grid-header-filter .small-device {
    flex-grow: 1;
}

/* jmix-lumo/components/jmix-horizontal-menu.css */
.jmix-horizontal-menu {
  color: var(--lumo-secondary-text-color);
}

.jmix-horizontal-menu-root-item:hover {
  color: var(--lumo-contrast-80pct);
}

.jmix-horizontal-menu vaadin-menu-bar-button {
  color: inherit;
  background-color: transparent;
  border-radius: var(--lumo-border-radius-m);
  padding: 0;
}

.jmix-horizontal-menu vaadin-menu-bar-button[expanded] {
  background-color: var(--lumo-primary-color-10pct);
}

.jmix-horizontal-menu vaadin-menu-bar-button.jmix-horizontal-menu-item-wrapper[focus-ring] {
  box-shadow: inset 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color)
}

vaadin-menu-bar .jmix-horizontal-menu-item-wrapper {
  margin: 0;
  padding: 0;
}

vaadin-menu-bar-list-box .jmix-horizontal-menu-item-wrapper {
  padding: 0;
}

vaadin-menu-bar-list-box vaadin-menu-bar-item[class~='jmix-horizontal-menu-item-wrapper']::part(checkmark) {
  display: none;
}

.jmix-horizontal-menu-item-wrapper[aria-haspopup='true']::after {
  margin: 0;
  padding-inline-start: calc(var(--lumo-space-s) + var(--lumo-space-xs));
  padding-inline-end: var(--lumo-space-s);
}

.jmix-horizontal-menu-content-item {
  gap: var(--lumo-space-s);
  align-items: center;
}

.jmix-horizontal-menu-content-item vaadin-icon.prefix-component {
  width: var(--lumo-icon-size-s);
  height: var(--lumo-icon-size-s);
}

.jmix-horizontal-menu-content-item .suffix-component {
  margin-inline-start: auto;
}

vaadin-menu-bar .jmix-horizontal-menu-content-item {
  padding-inline-start: calc(var(--lumo-size-m) / 3 + var(--lumo-border-radius-m) / 2);
  padding-inline-end: calc(var(--lumo-size-m) / 3 + var(--lumo-border-radius-m) / 2);

  /*explicit values are copied from vaadin-menu-bar-item component*/
  padding-top: 0.5em;
  padding-bottom: 0.5em;
}

vaadin-menu-bar-list-box .jmix-horizontal-menu-content-item {
  /*The padding is equal to width of icon prefix when it's not set*/
  padding-inline-start: calc(var(--lumo-icon-size-s) + var(--lumo-space-s) * 2);
  padding-inline-end: 0;

  /*explicit values are copied from vaadin-menu-bar-item component*/
  padding-top: 0.5em;
  padding-bottom: 0.5em;
}

vaadin-menu-bar-list-box .jmix-horizontal-menu-content-item[prefixed] {
  padding-inline-start: var(--lumo-space-s);
}

vaadin-menu-bar-list-box .jmix-horizontal-menu-content-item .text-component:not(:last-child) {
  margin-inline-end: var(--lumo-space-l);
}

.jmix-horizontal-menu-item:hover {
  text-decoration: none;
}

vaadin-menu-bar-item .jmix-horizontal-menu-item {
  color: inherit;
  display: flex;
  cursor: pointer;
  width: 100%;
}

vaadin-menu-bar-list-box .jmix-horizontal-menu-item {
  /*The padding is equal to width of 'greater' sign of expandable items*/
  padding-inline-end: calc(var(--lumo-icon-size-s) + var(--lumo-space-s) * 2);
}

/* jmix-lumo/components/jmix-grid-context-menu.css */
.jmix-grid-context-menu-item-component {
  gap: var(--lumo-space-s);
  align-items: center;
  width: 100%;
  display: flex;
}

.jmix-grid-context-menu-item-component vaadin-icon.prefix-component {
  width: var(--lumo-icon-size-s);
  height: var(--lumo-icon-size-s);
}

.jmix-grid-context-menu-item-component .suffix-component {
  margin-inline-start: auto;
}

.jmix-grid-context-menu-item-component kbd.suffix-component {
  box-sizing: border-box;
  display: inline-block;
  padding: calc(var(--lumo-space-xs) / 2) var(--lumo-space-xs);
  font-size: calc(var(--lumo-font-size-xs) * 0.85);
  line-height: var(--lumo-line-height-xs);
  color: var(--lumo-secondary-text-color);
  vertical-align: middle;
  background-color: var(--lumo-contrast-5pct);
  border: 1px solid var(--lumo-contrast-20pct);
  border-radius: var(--lumo-border-radius-m);
  box-shadow: inset 0 -1px 0 var(--lumo-contrast-20pct, var(--lumo-contrast-5pct));
}

.jmix-grid-context-menu-item-component .text-component:not(:last-child) {
  margin-inline-end: var(--lumo-space-l);
}

/* jmix-lumo/components/jmix-user-menu.css */
vaadin-menu-bar[jmix-role='jmix-user-menu'] {
    flex-shrink: 0;
}

vaadin-menu-bar[jmix-role='jmix-user-menu'] vaadin-menu-bar-button.jmix-user-menu-button {
    padding: 0;
    min-width: var(--lumo-button-size);
    height: auto;
}

vaadin-menu-bar[jmix-role='jmix-user-menu'] vaadin-menu-bar-button.jmix-user-menu-button::part(label) {
    padding: 0;
}

vaadin-menu-bar[jmix-role='jmix-user-menu'] vaadin-menu-bar-item.jmix-user-menu-button {
    padding: 0;
    margin: 0;

    height: 100%;
}

vaadin-menu-bar[jmix-role='jmix-user-menu'] vaadin-menu-bar-item::part(content) {
    display: flex;
    align-items: center;
    gap: var(--lumo-space-s);
}

vaadin-menu-bar[jmix-role='jmix-user-menu'] vaadin-menu-bar-item::part(checkmark):before {
    color: inherit;
}

vaadin-menu-bar[jmix-role='jmix-user-menu'] vaadin-menu-bar-item[theme~='non-checkable'] {
    padding-inline-start: var(--lumo-space-s);
}

vaadin-menu-bar[jmix-role='jmix-user-menu'] vaadin-menu-bar-item[theme~='non-checkable']::part(checkmark) {
    display: none;
}

/* Default Button Renderer */

.jmix-user-menu-button-content {
    display: grid;
    grid-template: "avatar username"
                   "avatar subtext";
    grid-template-columns: auto 1fr;
    column-gap: var(--lumo-space-s);

    width: max-content;
    box-sizing: border-box;

    color: var(--lumo-body-text-color);
    padding: var(--lumo-space-xs) var(--lumo-space-s);
}

.jmix-user-menu-button-content > .jmix-user-menu-button-content-user-avatar {
    grid-area: avatar;
    align-self: center;
}

.jmix-user-menu-button-content > .jmix-user-menu-button-content-user-name {
    grid-row: username / subtext;
    align-self: center;
    text-align: start;

    width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
}

vaadin-menu-bar[jmix-role='jmix-user-menu'][theme~='substituted'] .jmix-user-menu-button-content > .jmix-user-menu-button-content-user-name {
    grid-row: username;
}

.jmix-user-menu-button-content > .jmix-user-menu-button-content-subtext {
    grid-area: subtext;
    align-self: center;
    text-align: start;

    color: var(--lumo-secondary-text-color);
    font-size: var(--lumo-font-size-xs);

    width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
}

vaadin-menu-bar[jmix-role='jmix-user-menu']:not([theme~='substituted']) .jmix-user-menu-button-content > .jmix-user-menu-button-content-subtext {
    display: none;
}

/* jmix-lumo/components/jmix-login-form.css */
.jmix-login-form-additional-fields-container {
    display: flex;
    gap: var(--lumo-space-s);
    justify-content: end;
    padding-top: var(--lumo-space-m);
}

.jmix-login-form-remember-me {
    align-self: center;
    flex-grow: 1;
}

.jmix-login-form-locales-select {
    width: var(--jmix-login-form-locales-select-width, 8em);
}

vaadin-select.jmix-login-form-locales-select vaadin-select-value-button {
    width: 0;
}

/* jmix-lumo/components/jmix-markdown-editor.css */
/* jmix-lumo/src/components/jmix-markdown-editor.css */
@media lumo_components_jmix-markdown-editor {
    :host {
        font-family: var(--lumo-font-family);
        font-size: var(--lumo-font-size-m);
        line-height: var(--lumo-line-height-m);
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        --_focus-ring-color: var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
        --_focus-ring-width: var(--vaadin-focus-ring-width, 2px);
    }

    [part='input-field']:focus-within,
    :host([readonly]) .jmix-markdown-editor-container:focus-within {
        outline: none;
    }

    :host([focus-ring]) [part='input-field'] {
        box-shadow: 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
    }

    .tab:focus-visible {
        outline: var(--_focus-ring-width) solid var(--_focus-ring-color);
        outline-offset: calc(var(--_focus-ring-width) * -3);
    }

    .content-area:focus-visible {
        outline: var(--_focus-ring-width) solid var(--_focus-ring-color);
    }

    [part~='toolbar-button'],
    .toolbar-overflow {
        --vaadin-icon-size: var(--lumo-icon-size-s);

        width: var(--lumo-size-m);
        height: var(--lumo-size-m);

        padding: var(--jmix-markdown-editor-toolbar-button-padding, 0);
    }

    [part~='toolbar-button']:focus-visible,
    .toolbar-overflow:focus-visible {
        outline: none;
        box-shadow: inset 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
    }

    [part~='toolbar-button'][aria-pressed='true'] {
        --jmix-markdown-editor-toolbar-button-background: var(--lumo-primary-color);
        --jmix-markdown-editor-toolbar-button-text-color: var(--lumo-primary-contrast-color);
        --jmix-markdown-editor-toolbar-button-border-color: transparent;
    }

    :host([invalid]) {
        --vaadin-input-field-border-color: var(--vaadin-input-field-error-color, var(--lumo-error-color));
        --_focus-ring-color: var(--lumo-error-color-50pct);
    }

    [part='error-message'] {
        display: block;
        margin-top: 0;
    }

    [part='error-message']::before {
        mask: none;
        width: unset;
        background: unset;
    }
}


:root::before,
:host::before {
    --_lumo-jmix-markdown-editor-inject: 1;
    --_lumo-jmix-markdown-editor-inject-modules:
            lumo_mixins_field-label,
            lumo_mixins_field-required,
            lumo_mixins_field-error-message,
            lumo_mixins_field-helper,
            lumo_components_jmix-markdown-editor;
}

jmix-markdown-editor[readonly][has-error-message]::part(error-message),
jmix-markdown-editor[disabled][has-error-message]::part(error-message) {
    display:none;
}

jmix-markdown-editor[readonly][invalid],
jmix-markdown-editor[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
}

/* jmix-lumo/components/jmix-tabsheet.css */
:root::before,
:host::before {
    --_lumo-jmix-tabsheet-inject: 1;
    --_lumo-jmix-tabsheet-inject-modules:
            lumo_mixins_loader,
            lumo_components_tabsheet;
}

/* jmix-lumo/components/jmix-jpql-filter.css */
.jmix-jpql-filter {
    gap: var(--lumo-space-s);
}

/* jmix-lumo/components/jmix-grid-layout.css */
jmix-grid-layout::part(items) {
    grid-gap: var(--_grid-layout-grid-gap, var(--lumo-space-s));
}

/* jmix-lumo/components/jmix-side-panel-layout.css */
/* jmix-lumo/src/components/jmix-side-panel-layout.css */
@media lumo_components_jmix-side-panel-layout {

    /*
     * Ex Base styles
     */

    :host {
        display: block;
        box-sizing: border-box;

        --_transition-duration: var(--jmix-side-panel-layout-transition-duration, 200ms);

        --_horizontal-size: var(--jmix-side-panel-layout-horizontal-size, auto);
        --_horizontal-max-size: var(--jmix-side-panel-layout-horizontal-max-size, 50%);
        --_horizontal-min-size: var(--jmix-side-panel-layout-horizontal-min-size, 14em);

        --_vertical-size: var(--jmix-side-panel-layout-vertical-size, auto);
        --_vertical-max-size: var(--jmix-side-panel-layout-vertical-max-size, 50%);
        --_vertical-min-size: var(--jmix-side-panel-layout-vertical-min-size, 10em);
    }

    [part='layout'] {
        display: flex;
        height: 100%;
        position: relative;
        overflow: hidden;
    }

    :host,
    [part='content'] {
        display: flex;
        flex-direction: column;
    }

    [part='content'] {
        flex: 1 1 100%;
        height: 100%;
        box-sizing: border-box;
        transition:
            max-height var(--_transition-duration),
            max-width var(--_transition-duration);
    }

    [part='modalityCurtain'] {
        position: absolute;
        height: 100%;
        width: 100%;
        touch-action: manipulation;
    }

    [part='modalityCurtain'][hidden] {
        display: none;
    }

    :host([side-panel-opened][modal]) [part='modalityCurtain'],
    :host(:not([side-panel-opened])[modal]) [part='modalityCurtain']:not([hidden]) {
        background-color: rgba(0, 0, 0, 0.2);
    }

    [part='sidePanel'] {
        background-color: var(--vaadin-background-color);
        display: flex;
        flex-direction: column;
        height: 100%;
        width: 100%;
        outline: none;
        position: absolute;
        box-sizing: border-box;
        transition:
            transform var(--_transition-duration),
            visibility 0s linear var(--_transition-duration);
        visibility: hidden;
    }

    [part='sidePanelContent'] {
        box-sizing: border-box;
        display: flex;
        height: 100%;
        width: 100%;
        min-height: 0;
        flex: 1 1 auto;
        flex-direction: column;
        align-items: flex-start;
        overflow: hidden;
    }

    :host([side-panel-opened]) [part='sidePanel'] {
        visibility: visible;
        touch-action: manipulation;
        transition:
            transform var(--_transition-duration),
            visibility 0s;
    }

    :host([side-panel-opened][modal]) [part='modalityCurtain'] {
        animation: var(--_transition-duration) jmix-modality-curtain-dimmed-enter both;
        will-change: opacity;
    }

    :host(:not([side-panel-opened])[modal]) [part='modalityCurtain']:not([hidden]) {
        animation: var(--_transition-duration) jmix-modality-curtain-dimmed-out both;
        will-change: opacity;
    }

    /* SidePanel position */

    :host([side-panel-position='']) [part='sidePanel'],
    :host([side-panel-position='left']) [part='sidePanel'],
    :host([side-panel-position='right']) [part='sidePanel'],
    :host([side-panel-position='inline-start']) [part='sidePanel'],
    :host([side-panel-position='inline-end']) [part='sidePanel'] {
        width: var(--_horizontal-size);
        max-width: var(--_horizontal-max-size);
        min-width: var(--_horizontal-min-size);
    }

    :host([side-panel-position='bottom']) [part='sidePanel'],
    :host([side-panel-position='top']) [part='sidePanel'] {
        height: var(--_vertical-size);
        max-height: var(--_vertical-max-size);
        min-height: var(--_vertical-min-size);
    }

    :host([side-panel-position='top']) ::slotted([slot='sidePanelContentSlot']),
    :host([side-panel-position='bottom']) ::slotted([slot='sidePanelContentSlot']) {
        flex: 1 1 auto;
        min-height: 0;
    }

    :host([side-panel-position='left']) [part='sidePanel'] {
        transform: translateX(-100%);
        left: 0;
    }

    :host([side-panel-position='']) [part='sidePanel'],
    :host([side-panel-position='right']) [part='sidePanel'] {
        transform: translateX(100%);
        right: 0;
    }

    :host([side-panel-position='top']) [part='sidePanel'] {
        transform: translateY(-100%);
        top: 0;
    }

    :host([side-panel-position='bottom']) [part='sidePanel'] {
        transform: translateY(100%);
        bottom: 0;
    }

    :host([side-panel-position='inline-start']) [part='sidePanel'] {
        transform: translateX(-100%);
        inset-inline-start: 0;
    }

    :host([side-panel-position='inline-start'][dir='rtl']) [part='sidePanel'] {
        transform: translateX(100%);
    }

    :host([side-panel-position='inline-end']) [part='sidePanel'] {
        transform: translateX(100%);
        inset-inline-end: 0;
    }

    :host([side-panel-position='inline-end'][dir='rtl']) [part='sidePanel'] {
        transform: translateX(-100%);
    }

    /* Animation */

    :host([side-panel-opened][side-panel-position='']) [part='sidePanel'],
    :host([side-panel-opened][side-panel-position='right']) [part='sidePanel'],
    :host([side-panel-opened][side-panel-position='left']) [part='sidePanel'],
    :host([side-panel-opened][side-panel-position='inline-start']) [part='sidePanel'],
    :host([side-panel-opened][side-panel-position='inline-end']) [part='sidePanel'] {
        transform: translateX(0%);
    }

    :host([side-panel-opened][side-panel-position='top']) [part='sidePanel'],
    :host([side-panel-opened][side-panel-position='bottom']) [part='sidePanel'] {
        width: 100%;
        transform: translateY(0%);
    }

    :host([side-panel-position='left']:not([side-panel-overlay])) [part='content'] {
        /*
         * Since we change content max-width, the content shrinks itself to start.
         * When LEFT position is used, we need to align content to end for smooth animation.
         */
        margin-left: auto;
    }

    :host([side-panel-position='inline-start']:not([side-panel-overlay])) [part='content'] {
        margin-inline-start: auto;
    }

    :host([side-panel-position='inline-end']:not([side-panel-overlay])) [part='content'] {
        margin-inline-end: auto;
    }

    :host([side-panel-position='top']:not([side-panel-overlay])) [part='content'] {
        /*
         * Since we change content max-height, the content shrinks itself to top.
         * When TOP position is used, we need to align content to bottom for smooth animation.
         */
        align-self: end;
    }

    @keyframes jmix-modality-curtain-dimmed-enter {
        0% {
            opacity: 0;
        }
    }

    @keyframes jmix-modality-curtain-dimmed-out {
        100% {
            opacity: 0;
        }
    }

    @media (prefers-reduced-motion: reduce) {

        :host {
            --_transition-duration: none !important;
        }
    }

    @media (forced-colors: active) {

        [part='sidePanel'],
        [part='resizeHandle'] {
            border: 1px solid;
        }
    }

    /* Resize handle */

    /*
     * The handle mirrors the SplitLayout splitter: a band on the side panel's inner edge with a grip
     * in the middle. The band reserves space on the panel (see the padding rules below) so it does
     * not cover the panel content. The 'resizer-small' variant turns the band into a hairline and
     * shows the grip on hover/active only, like SplitLayout's 'small' variant.
     *
     * The private --_* variables are declared on the side panel so that the handle and the padding
     * read the same values. A variant redeclares them with other fallbacks; a user overrides the
     * public --jmix-side-panel-layout-* variables, which always win.
     */
    [part='sidePanel'] {
        --_splitter-size: var(--jmix-side-panel-layout-splitter-size, 0.5rem);
        --_splitter-target-size: var(--jmix-side-panel-layout-splitter-target-size, 0.5rem);
        --_handle-size: var(--jmix-side-panel-layout-handle-size, 0.25rem);
        --_handle-target-size: var(--jmix-side-panel-layout-handle-target-size, 2rem);
    }

    :host([theme~='resizer-small']) [part='sidePanel'] {
        --_splitter-size: var(--jmix-side-panel-layout-splitter-size, 1px);
        --_splitter-target-size: var(--jmix-side-panel-layout-splitter-target-size, 0.3rem);
        --_handle-size: var(--jmix-side-panel-layout-handle-size, 0.2rem);
    }

    [part='resizeHandle'] {
        position: absolute;
        z-index: 1;
        box-sizing: border-box;
        touch-action: none;
        background: var(--jmix-side-panel-layout-splitter-background, var(--vaadin-background-container-strong));
    }

    /* Pointer hit target; extends beyond the visible band when the target size is larger */
    [part='resizeHandle']::before {
        content: '';
        position: absolute;
    }

    /* Grip in the middle of the band */
    [part='resizeHandle']::after {
        content: '';
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        border-radius: var(--vaadin-radius-m);
        background: var(--jmix-side-panel-layout-handle-background, var(--vaadin-text-color-secondary));
    }

    /* 'resizer-small' variant: the grip is shown on hover/active only */
    :host([theme~='resizer-small']) [part='resizeHandle']::after {
        opacity: 0;
    }

    :host([theme~='resizer-small']) [part='resizeHandle']:active::after,
    :host([theme~='resizer-small'][resizing]) [part='resizeHandle']::after {
        opacity: 1;
    }

    @media (any-hover: hover) {

        :host([theme~='resizer-small']) [part='resizeHandle']:hover::after {
            opacity: 1;
        }
    }

    /* Resize: horizontal positions */

    :host([side-panel-position='']) [part='resizeHandle'],
    :host([side-panel-position='right']) [part='resizeHandle'],
    :host([side-panel-position='left']) [part='resizeHandle'],
    :host([side-panel-position='inline-start']) [part='resizeHandle'],
    :host([side-panel-position='inline-end']) [part='resizeHandle'] {
        top: 0;
        height: 100%;
        width: var(--_splitter-size);
        cursor: ew-resize;
    }

    :host([side-panel-position='']) [part='resizeHandle']::before,
    :host([side-panel-position='right']) [part='resizeHandle']::before,
    :host([side-panel-position='left']) [part='resizeHandle']::before,
    :host([side-panel-position='inline-start']) [part='resizeHandle']::before,
    :host([side-panel-position='inline-end']) [part='resizeHandle']::before {
        inset: 0 calc((var(--_splitter-target-size) - var(--_splitter-size)) / -2);
    }

    :host([side-panel-position='']) [part='resizeHandle']::after,
    :host([side-panel-position='right']) [part='resizeHandle']::after,
    :host([side-panel-position='left']) [part='resizeHandle']::after,
    :host([side-panel-position='inline-start']) [part='resizeHandle']::after,
    :host([side-panel-position='inline-end']) [part='resizeHandle']::after {
        width: var(--_handle-size);
        height: var(--_handle-target-size);
        max-height: 50%;
    }

    :host([side-panel-position='']) [part='resizeHandle'],
    :host([side-panel-position='right']) [part='resizeHandle'] {
        left: 0;
    }

    :host([side-panel-position='left']) [part='resizeHandle'] {
        right: 0;
    }

    :host([side-panel-position='inline-start']) [part='resizeHandle'] {
        inset-inline-end: 0;
    }

    :host([side-panel-position='inline-end']) [part='resizeHandle'] {
        inset-inline-start: 0;
    }

    /* Resize: vertical positions */

    :host([side-panel-position='top']) [part='resizeHandle'],
    :host([side-panel-position='bottom']) [part='resizeHandle'] {
        left: 0;
        width: 100%;
        height: var(--_splitter-size);
        cursor: ns-resize;
    }

    :host([side-panel-position='top']) [part='resizeHandle']::before,
    :host([side-panel-position='bottom']) [part='resizeHandle']::before {
        inset: calc((var(--_splitter-target-size) - var(--_splitter-size)) / -2) 0;
    }

    :host([side-panel-position='top']) [part='resizeHandle']::after,
    :host([side-panel-position='bottom']) [part='resizeHandle']::after {
        width: var(--_handle-target-size);
        max-width: 50%;
        height: var(--_handle-size);
    }

    :host([side-panel-position='top']) [part='resizeHandle'] {
        bottom: 0;
    }

    :host([side-panel-position='bottom']) [part='resizeHandle'] {
        top: 0;
    }

    /*
     * Reserve space for the band on the panel's inner edge, only while the handle is rendered
     * (not in the small-device 'overlay' mode, where the panel content moves into a side dialog).
     */
    :host([side-panel-resizable]:not([overlay])[side-panel-position='']) [part='sidePanel'],
    :host([side-panel-resizable]:not([overlay])[side-panel-position='right']) [part='sidePanel'] {
        padding-left: var(--_splitter-size);
    }

    :host([side-panel-resizable]:not([overlay])[side-panel-position='left']) [part='sidePanel'] {
        padding-right: var(--_splitter-size);
    }

    :host([side-panel-resizable]:not([overlay])[side-panel-position='inline-start']) [part='sidePanel'] {
        padding-inline-end: var(--_splitter-size);
    }

    :host([side-panel-resizable]:not([overlay])[side-panel-position='inline-end']) [part='sidePanel'] {
        padding-inline-start: var(--_splitter-size);
    }

    :host([side-panel-resizable]:not([overlay])[side-panel-position='top']) [part='sidePanel'] {
        padding-bottom: var(--_splitter-size);
    }

    :host([side-panel-resizable]:not([overlay])[side-panel-position='bottom']) [part='sidePanel'] {
        padding-top: var(--_splitter-size);
    }

    /* Disable size transition during a live drag */
    :host([resizing]) [part='sidePanel'] {
        transition: none;
    }

    :host([resizing]) [part='content'] {
        transition: none;
    }

    /*
     * Lumo styles
     */

    [part='sidePanel'] {
        background-color: var(--lumo-base-color);
        box-shadow: var(--lumo-box-shadow-m);
    }

    :host([side-panel-opened][modal]) [part='modalityCurtain'] {
        background-color: var(--lumo-shade-20pct);
    }

    :host(:not([side-panel-opened])[modal]) [part='modalityCurtain']:not([hidden]) {
        background-color: var(--lumo-shade-20pct);
    }

    :host([side-panel-opened][side-panel-position='inline-start']) [part='sidePanel'] {
        border-inline-end: 1px solid var(--lumo-contrast-10pct);
    }

    :host([side-panel-opened][side-panel-position='inline-end']) [part='sidePanel'] {
        border-inline-start: 1px solid var(--lumo-contrast-10pct);
    }

    :host([side-panel-opened][side-panel-position='']) [part='sidePanel'],
    :host([side-panel-opened][side-panel-position='right']) [part='sidePanel'] {
        border-left: 1px solid var(--lumo-contrast-10pct);
    }

    :host([side-panel-opened][side-panel-position='left']) [part='sidePanel'] {
        border-right: 1px solid var(--lumo-contrast-10pct);
    }

    :host([side-panel-opened][side-panel-position='top']) [part='sidePanel'] {
        border-block-end: 1px solid var(--lumo-contrast-10pct);
    }

    :host([side-panel-opened][side-panel-position='bottom']) [part='sidePanel'] {
        border-block-start: 1px solid var(--lumo-contrast-10pct);
    }

    /* Resize handle: Lumo tokens, hover and active, mirrors vaadin-split-layout's Lumo styles */

    [part='sidePanel'] {
        --_splitter-size: var(--jmix-side-panel-layout-splitter-size, var(--lumo-space-s));
        --_splitter-target-size: var(--jmix-side-panel-layout-splitter-target-size, var(--lumo-space-s));
        --_handle-size: var(--jmix-side-panel-layout-handle-size, var(--lumo-space-xs));
        --_handle-target-size: var(--jmix-side-panel-layout-handle-target-size, var(--lumo-size-m));
    }

    :host([theme~='resizer-small']) [part='sidePanel'] {
        --_handle-size: var(--jmix-side-panel-layout-handle-size, 0.3rem);
    }

    [part='resizeHandle'] {
        background: var(--jmix-side-panel-layout-splitter-background, var(--lumo-contrast-5pct));
    }

    :host([theme~='resizer-small']) [part='resizeHandle'] {
        background: var(--jmix-side-panel-layout-splitter-background, var(--lumo-contrast-10pct));
    }

    [part='resizeHandle']::after {
        background: var(--jmix-side-panel-layout-handle-background, var(--lumo-contrast-30pct));
        border-radius: var(--lumo-border-radius-s);
        transition: 0.1s background-color;
    }

    @media (any-hover: hover) {

        [part='resizeHandle']:hover::after {
            background: var(--lumo-contrast-40pct);
        }
    }

    [part='resizeHandle']:active::after,
    :host([resizing]) [part='resizeHandle']::after {
        background: var(--lumo-contrast-50pct);
    }
}


:root,
:host {
    --_lumo-jmix-side-panel-layout-inject: 1;
    --_lumo-jmix-side-panel-layout-inject-modules:
            lumo_components_jmix-side-panel-layout;
}

/* jmix-lumo/components/jmix-side-panel-layout-closer.css */
/* jmix-lumo/src/components/jmix-side-panel-layout-closer.css */
@media lumo_components_jmix-side-panel-layout-closer {

    /*
     * Ex Base styles
     */

    [part='icon'] {
      background: currentColor;
      display: block;
      height: var(--vaadin-icon-size, 1lh);
      mask: var(--_vaadin-icon-cross) 50% / var(--vaadin-icon-visual-size, 100%) no-repeat;
      width: var(--vaadin-icon-size, 1lh);
    }

    [hidden] {
      display: none !important;
    }

    @media (forced-colors: active) {

        [part='icon'] {
          background: CanvasText;
        }
    }

    /*
     * Lumo styles
     */

    /* Copied from packages/vaadin-lumo-styles/src/components/drawer-toggle.css */
    :host {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      cursor: default;
      position: relative;
      /*outline: none;*/ /* Jmix  */
      width: var(--lumo-size-l);
      height: var(--lumo-size-l);
      min-width: auto;
      margin: 0 var(--lumo-space-s);
      padding: 0;
      background: transparent;
      color: var(--lumo-secondary-text-color); /* Jmix */
    }

    [part='icon'],
    [part='icon']::after,
    [part='icon']::before {
      height: auto;
      width: auto;
      background: transparent;
    }

    [part='icon']::after,
    [part='icon']::before {
      content: '';
    }

    [part='icon']::after {
      top: 6px;
    }

    [part='icon']::before {
      top: 12px;
      font-family: lumo-icons;
      font-size: var(--lumo-icon-size-m);
      content: var(--lumo-icons-cross);
    }

    :host { /* Jmix */
      color: var(--lumo-contrast);
    }
}


:root,
:host {
    --_lumo-jmix-side-panel-layout-closer-inject: 1;
    --_lumo-jmix-side-panel-layout-closer-inject-modules:
            lumo_components_button,
            lumo_components_jmix-side-panel-layout-closer;
}

/* jmix-lumo/components/jmix-side-dialog-overlay.css */
/* jmix-lumo/src/components/jmix-side-dialog-overlay.css */
@media lumo_components_jmix-side-dialog-overlay {
    :host {
        top: 0;
        bottom: 0;
        right: 0;
        left: 0;

        --_transition-duration: var(--jmix-side-dialog-transition-duration, 200ms);

        --_horizontal-size: var(--jmix-side-dialog-horizontal-size, auto);
        --_horizontal-max-size: var(--jmix-side-dialog-horizontal-max-size, 50%);
        --_horizontal-min-size: var(--jmix-side-dialog-horizontal-min-size, 16em);

        --_vertical-size: var(--jmix-side-dialog-vertical-size, auto);
        --_vertical-max-size: var(--jmix-side-dialog-vertical-max-size, 50vh);
        --_vertical-min-size: var(--jmix-side-dialog-vertical-min-size, 16em);
    }

    :host [part='overlay'] {
        border-radius: 0;
    }

    :host([opening]),
    :host([closing]) {
        animation: var(--_transition-duration) jmix-side-dialog-dummy-animation;
    }

    :host([opening]) [part='backdrop'] {
        animation: jmix-side-dialog-backdrop-enter var(--_transition-duration) ease-in-out both;
        will-change: opacity;
    }

    :host([closing]) [part='backdrop'] {
        animation: jmix-side-dialog-backdrop-exit var(--_transition-duration) ease-in-out both;
        will-change: opacity;
    }

    /* Right - default */

    :host([side-dialog-position='']),
    :host([side-dialog-position='right']) {
        align-items: flex-end;
        margin-right: 0;
    }

    :host([side-dialog-position=''][dir='rtl']),
    :host([side-dialog-position='right'][dir='rtl']) {
        align-items: flex-start;
        margin-left: 0;
    }

    :host([opening][side-dialog-position='']) [part='overlay'],
    :host([opening][side-dialog-position='right']) [part='overlay'] {
        transform: translateX(100%);

        animation: jmix-side-dialog-right-opening var(--_transition-duration) ease-in-out both;
    }

    :host([closing][side-dialog-position='']) [part='overlay'],
    :host([closing][side-dialog-position='right']) [part='overlay'] {
        transform: translateX(0);

        animation: jmix-side-dialog-right-closing var(--_transition-duration) ease-in-out both;
    }

    /* Left */

    :host([side-dialog-position="left"]) {
        align-items: flex-start;
        margin-left: 0;
    }

    :host([side-dialog-position='left'][dir='rtl']) {
        align-items: flex-end;
        margin-right: 0;
    }

    :host([opening][side-dialog-position='left']) [part='overlay'] {
        transform: translateX(-100%);

        animation: jmix-side-dialog-left-opening var(--_transition-duration) ease-in-out forwards;
    }

    :host([closing][side-dialog-position='left']) [part='overlay'] {
        transform: translateX(0);

        animation: jmix-side-dialog-left-closing var(--_transition-duration) ease-in-out forwards;
    }

    /* Top */

    :host([side-dialog-position="top"]:not([fullscreen])) {
        margin-top: 0;
        align-self: flex-start;
        max-height: 100vh;
    }

    :host([opening][side-dialog-position='top']) [part='overlay'] {
        transform: translateY(-100%);

        animation: jmix-side-dialog-top-opening var(--_transition-duration) ease-in-out forwards;
    }

    :host([closing][side-dialog-position='top']) [part='overlay'] {
        transform: translateY(0);

        animation: jmix-side-dialog-top-closing var(--_transition-duration) ease-in-out forwards;
    }

    /* Bottom */

    :host([side-dialog-position="bottom"]:not([fullscreen])) {
        margin-bottom: 0;
        align-self: flex-end;
        max-height: 100vh;
    }

    :host([opening][side-dialog-position='bottom']) [part='overlay'] {
        transform: translateY(100%);

        animation: jmix-side-dialog-bottom-opening var(--_transition-duration) ease-in-out forwards;
    }

    :host([closing][side-dialog-position='bottom']) [part='overlay'] {
        transform: translateY(0);

        animation: jmix-side-dialog-bottom-closing var(--_transition-duration) ease-in-out forwards;
    }

    /* Inline start */

    :host([side-dialog-position="inline-start"]) {
        align-items: start;
        margin-inline-start: 0;
    }

    :host([opening][side-dialog-position='inline-start']) [part='overlay'] {
        transform: translateX(-100%);

        animation: jmix-side-dialog-left-opening var(--_transition-duration) ease-in-out forwards;
    }

    :host([opening][side-dialog-position='inline-start'][dir='rtl']) [part='overlay'] {
        transform: translateX(100%);

        animation: jmix-side-dialog-inline-start-rtl-opening var(--_transition-duration) ease-in-out forwards;
    }

    :host([closing][side-dialog-position='inline-start']) [part='overlay'] {
        transform: translateX(0%);

        animation: jmix-side-dialog-left-closing var(--_transition-duration) ease-in-out forwards;
    }

    :host([closing][side-dialog-position='inline-start'][dir='rtl']) [part='overlay'] {
        transform: translateX(100%);

        animation: jmix-side-dialog-inline-start-rtl-closing var(--_transition-duration) ease-in-out forwards;
    }

    /* Inline end */

    :host([side-dialog-position="inline-end"]) {
        align-items: end;
        margin-inline-end: 0;
    }

    :host([opening][side-dialog-position='inline-end']) [part='overlay'] {
        transform: translateX(100%);

        animation: jmix-side-dialog-right-opening var(--_transition-duration) ease-in-out forwards;
    }

    :host([opening][side-dialog-position='inline-end'][dir='rtl']) [part='overlay'] {
        transform: translateX(-100%);

        animation: jmix-side-dialog-inline-end-rtl-opening var(--_transition-duration) ease-in-out forwards;
    }

    :host([closing][side-dialog-position='inline-end']) [part='overlay'] {
        transform: translateX(0%);

        animation: jmix-side-dialog-right-closing var(--_transition-duration) ease-in-out forwards;
    }

    :host([closing][side-dialog-position='inline-end'][dir='rtl']) [part='overlay'] {
        transform: translateX(100%);

        animation: jmix-side-dialog-inline-end-rtl-closing var(--_transition-duration) ease-in-out forwards;
    }

    :host([side-dialog-position="left"]) [part='overlay'],
    :host([side-dialog-position="right"]) [part='overlay'],
    :host([side-dialog-position="inline-start"]) [part='overlay'],
    :host([side-dialog-position="inline-end"]) [part='overlay'] {
        height: 100%;
        max-width: var(--_horizontal-max-size);
        min-width: var(--_horizontal-min-size);
        width: var(--_horizontal-size);
    }

    :host([side-dialog-position="top"]) [part='overlay'],
    :host([side-dialog-position="bottom"]) [part='overlay'] {
        height: var(--_vertical-size);
        max-height: var(--_vertical-max-size);
        min-height: var(--_vertical-min-size);
        width: 100%;
    }

    :host([fullscreen]) [part='overlay'] {
        width: 100% !important;
        height: 100% !important;
        max-height: 100% !important;
        max-width: 100% !important;
    }

    /* Right animation */

    @keyframes jmix-side-dialog-right-opening {
        0% {
            transform: translateX(100%);
        }
        100% {
            transform: translateX(0);
        }
    }

    @keyframes jmix-side-dialog-right-closing {
        0% {
            transform: translateX(0);
        }
        100% {
            transform: translateX(100%);
        }
    }

    /* Left animation */

    @keyframes jmix-side-dialog-left-opening {
        0% {
            transform: translateX(-100%);
        }
        100% {
            transform: translateX(0);
        }
    }

    @keyframes jmix-side-dialog-left-closing {
        0% {
            transform: translateX(0);
        }
        100% {
            transform: translateX(-100%);
        }
    }

    /* Inline start RTL animation */

    @keyframes jmix-side-dialog-inline-start-rtl-opening {
        0% {
            transform: translateX(100%);
        }
         100% {
            transform: translateX(0);
        }
    }

    @keyframes jmix-side-dialog-inline-start-rtl-closing {
        0% {
            transform: translateX(0%);
        }
        100% {
            transform: translateX(100%);
        }
    }

    /* Inline end RTL animation */

    @keyframes jmix-side-dialog-inline-end-rtl-opening {
        0% {
            transform: translateX(-100%);
        }
        100% {
            transform: translateX(0);
        }
    }

    @keyframes jmix-side-dialog-inline-end-rtl-closing {
         0% {
            transform: translateX(0%);
        }
         100% {
            transform: translateX(-100%);
        }
    }

    /* Top animation */

    @keyframes jmix-side-dialog-top-opening {
        0% {
            transform: translateY(-100%);
        }
        100% {
            transform: translateY(0);
        }
    }

    @keyframes jmix-side-dialog-top-closing {
        0% {
            transform: translateY(0);
        }
        100% {
            transform: translateY(-100%);
        }
    }

    /* Bottom animation */

    @keyframes jmix-side-dialog-bottom-opening {
        0% {
            transform: translateY(100%);
        }
        100% {
            transform: translateY(0);
        }
    }

    @keyframes jmix-side-dialog-bottom-closing {
        0% {
            transform: translateY(0);
        }
        100% {
            transform: translateY(100%);
        }
    }


    @keyframes jmix-side-dialog-backdrop-enter {
        0% {
            opacity: 0;
        }
        100% {
            opacity: 1;
        }
    }
    @keyframes jmix-side-dialog-backdrop-exit {
        0% {
            opacity: 1;
        }
        100% {
            opacity: 0;
        }
    }

    @keyframes jmix-side-dialog-dummy-animation {
        0% {
            opacity: 1;
        }
        100% {
            opacity: 1;
        }
    }

    @media (prefers-reduced-motion: reduce) {
        :host {
            --_transition-duration: none !important;
        }
    }

    /*
     * Lumo styles
     */

     :host [part='backdrop'] {
         animation: none;
     }
}


:root,
:host {
    --_lumo-jmix-side-dialog-overlay-inject: 1;
    --_lumo-jmix-side-dialog-overlay-inject-modules:
            lumo_mixins_overlay,
            lumo_mixins_resizable-overlay,
            lumo_components_dialog-overlay,
            lumo_components_jmix-side-dialog-overlay;
}

/* jmix-lumo/components/jmix-view-layout.css */
/* shared/src/components/jmix-view-layout.css */
vaadin-vertical-layout[jmix-role='jmix-view-layout'] {
    width: 100%;
    height: 100%;
}

/* jmix-lumo/components/jmix-bpmn-modeler.css */
/* jmix-lumo/src/components/jmix-bpmn-modeler.css */
@media lumo_components_jmix-bpmn-modeler {

    /* Ex Base styles */

    :host {
        display: block;
        outline: none;
    }

    [part='container'] {
        position: relative;
        width: 100%;
        height: 100%;
        border-radius: inherit;
        overflow: hidden;
    }

    [part='focus-ring'] {
        position: absolute;
        inset: 0;
        z-index: 1;
        border-radius: inherit;
        pointer-events: none;
    }

    /* Lumo specific styles */

    :host(:focus-within) [part='focus-ring'] {
        box-shadow: inset 0 0 0 var(--vaadin-focus-ring-width, 2px) var(--jmix-bpmn-modeler-focus-ring-color, var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct)));
    }
}


:root,
:host {
    --_lumo-jmix-bpmn-modeler-inject: 1;
    --_lumo-jmix-bpmn-modeler-inject-modules:
            lumo_components_jmix-bpmn-modeler;
}

/*
 * Popup-menu icon for the "Send Notification" service task. Kept OUTSIDE the
 * lumo_components injection block on purpose: that block is injected into the
 * component's shadow DOM, but the modeler renders its diagram-js content (incl.
 * the replace popup) in the light DOM, so the rule must stay global (this file
 * is imported globally by ../../components/jmix-bpmn-modeler.css).
 *
 * bpmn-font ships no bell glyph, so the bell is rendered as a CSS mask painted
 * with currentColor - it follows the entry's color (incl. hover/selected) and
 * scales with font-size like the built-in font glyphs. The class name contains
 * the "icon" substring on purpose, so the diagram-js popup rules size and space
 * it for free. The bell path matches BpmRenderer#_drawSendNotificationTask.
 */
.djs-popup .jmix-icon-send-notification::before {
    content: '';
    background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='5 5 18 18'%3E%3Cpath d='M 14 6.5 c -3.2 0 -5.2 2.3 -5.2 5.5 l 0 3.6 l -1.6 2.2 l 13.6 0 l -1.6 -2.2 l 0 -3.6 c 0 -3.2 -2 -5.5 -5.2 -5.5 z M 12.2 19.4 a 1.8 1.8 0 0 0 3.6 0'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='5 5 18 18'%3E%3Cpath d='M 14 6.5 c -3.2 0 -5.2 2.3 -5.2 5.5 l 0 3.6 l -1.6 2.2 l 13.6 0 l -1.6 -2.2 l 0 -3.6 c 0 -3.2 -2 -5.5 -5.2 -5.5 z M 12.2 19.4 a 1.8 1.8 0 0 0 3.6 0'/%3E%3C/svg%3E") center / contain no-repeat;
}


/* Vaadin components */
/* jmix-lumo/components/vaadin-text-field.css */
vaadin-text-field[readonly][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: transparent;
    --vaadin-input-field-invalid-hover-highlight: transparent;
}

vaadin-text-field[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: var(--lumo-contrast-5pct);
}

vaadin-text-field[disabled][has-error-message]::part(error-message),
vaadin-text-field[readonly][has-error-message]::part(error-message) {
    display: none;
}

/* jmix-lumo/components/vaadin-text-area.css */
vaadin-text-area[readonly][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: transparent;
    --vaadin-input-field-invalid-hover-highlight: transparent;
}

vaadin-text-area[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: var(--lumo-contrast-5pct);
}

vaadin-text-area[disabled][has-error-message]::part(error-message),
vaadin-text-area[readonly][has-error-message]::part(error-message) {
    display: none;
}

/* jmix-lumo/components/vaadin-number-field.css */
vaadin-number-field[readonly][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: transparent;
    --vaadin-input-field-invalid-hover-highlight: transparent;
}

vaadin-number-field[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: var(--lumo-contrast-5pct);
}

vaadin-number-field[disabled][has-error-message]::part(error-message),
vaadin-number-field[readonly][has-error-message]::part(error-message) {
    display: none;
}

/* jmix-lumo/components/vaadin-big-decimal-field.css */
vaadin-big-decimal-field[readonly][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: transparent;
    --vaadin-input-field-invalid-hover-highlight: transparent;
}

vaadin-big-decimal-field[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: var(--lumo-contrast-5pct);
}

vaadin-big-decimal-field[disabled][has-error-message]::part(error-message),
vaadin-big-decimal-field[readonly][has-error-message]::part(error-message) {
    display: none;
}

/* jmix-lumo/components/vaadin-integer-field.css */
vaadin-integer-field[readonly][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: transparent;
    --vaadin-input-field-invalid-hover-highlight: transparent;
}

vaadin-integer-field[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: var(--lumo-contrast-5pct);
}

vaadin-integer-field[disabled][has-error-message]::part(error-message),
vaadin-integer-field[readonly][has-error-message]::part(error-message) {
    display: none;
}

/* jmix-lumo/components/vaadin-password-field.css */
vaadin-password-field[readonly][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: transparent;
    --vaadin-input-field-invalid-hover-highlight: transparent;
}

vaadin-password-field[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: var(--lumo-contrast-5pct);
}

vaadin-password-field[disabled][has-error-message]::part(error-message),
vaadin-password-field[readonly][has-error-message]::part(error-message) {
    display: none;
}

/* jmix-lumo/components/vaadin-email-field.css */
vaadin-email-field[readonly][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: transparent;
    --vaadin-input-field-invalid-hover-highlight: transparent;
}

vaadin-email-field[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: var(--lumo-contrast-5pct);
}

vaadin-email-field[disabled][has-error-message]::part(error-message),
vaadin-email-field[readonly][has-error-message]::part(error-message) {
    display: none;
}

/* jmix-lumo/components/vaadin-select.css */
vaadin-select[readonly][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: transparent;
    --vaadin-input-field-invalid-hover-highlight: transparent;
}

vaadin-select[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: var(--lumo-contrast-5pct);
}

vaadin-select[disabled][has-error-message]::part(error-message),
vaadin-select[readonly][has-error-message]::part(error-message) {
    display: none;
}

/* jmix-lumo/components/vaadin-checkbox-group.css */
vaadin-checkbox-group[readonly][has-error-message]::part(error-message),
vaadin-checkbox-group[disabled][has-error-message]::part(error-message) {
    display: none;
}

vaadin-checkbox-group[readonly][invalid],
vaadin-checkbox-group[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
}

/* jmix-lumo/components/vaadin-radio-group.css */
vaadin-radio-group[readonly][has-error-message]::part(error-message),
vaadin-radio-group[disabled][has-error-message]::part(error-message) {
    display: none;
}

vaadin-radio-group[readonly][invalid],
vaadin-radio-group[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
}

/* jmix-lumo/components/vaadin-date-picker.css */
vaadin-date-picker[readonly][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: transparent;
    --vaadin-input-field-invalid-hover-highlight: transparent;
}

vaadin-date-picker[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: var(--lumo-contrast-5pct);
}

vaadin-date-picker[disabled][has-error-message]::part(error-message),
vaadin-date-picker[readonly][has-error-message]::part(error-message) {
    display: none;
}

/* jmix-lumo/components/vaadin-time-picker.css */
vaadin-time-picker[readonly][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: transparent;
    --vaadin-input-field-invalid-hover-highlight: transparent;
}

vaadin-time-picker[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: var(--lumo-contrast-5pct);
}

vaadin-time-picker[disabled][has-error-message]::part(error-message),
vaadin-time-picker[readonly][has-error-message]::part(error-message) {
    display: none;
}

/* jmix-lumo/components/vaadin-date-time-picker.css */
vaadin-date-time-picker[readonly][invalid]::part(error-message),
vaadin-date-time-picker[disabled][invalid]::part(error-message) {
    display: none;
}

vaadin-date-time-picker[readonly],
vaadin-date-time-picker[disabled] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
}

vaadin-date-time-picker[readonly] ::part(input-field) {
    --vaadin-input-field-invalid-background: transparent;
}

vaadin-date-time-picker[readonly] ::part(input-field)::after {
    --vaadin-input-field-invalid-hover-highlight: transparent;
}

vaadin-date-time-picker[disabled] ::part(input-field) {
    --vaadin-input-field-invalid-background: var(--lumo-contrast-5pct);
}

/* jmix-lumo/components/vaadin-dialog.css */
.jmix-dialog-window-header-wrapper {
    display: inline-flex;
    column-gap: var(--lumo-space-s);
}

.jmix-dialog-window-header-wrapper > .jmix-dialog-window-close-button {
    margin-inline-start: auto;
}

.jmix-dialog-window-header-wrapper > .jmix-dialog-window-maximize-button:not([hidden]) {
    margin-inline-start: auto;
}

.jmix-dialog-window-header-wrapper > .jmix-dialog-window-maximize-button:not([hidden]) ~ .jmix-dialog-window-close-button {
    margin-inline-start: 0;
}

vaadin-dialog[jmix-maximized]::part(overlay) {
    position: var(--jmix-dialog-maximized-position, fixed) !important;
    inset: var(--jmix-dialog-maximized-inset, 0) !important;
    width: var(--jmix-dialog-maximized-width, auto) !important;
    height: var(--jmix-dialog-maximized-height, auto) !important;

    max-width: none;
    max-height: none;
    border-radius: 0;
}

/* jmix-lumo/components/vaadin-combo-box.css */
vaadin-combo-box[readonly][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: transparent;
    --vaadin-input-field-invalid-hover-highlight: transparent;
}

vaadin-combo-box[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: var(--lumo-contrast-5pct);
}

vaadin-combo-box[disabled][has-error-message]::part(error-message),
vaadin-combo-box[readonly][has-error-message]::part(error-message) {
    display: none;
}

/* jmix-lumo/components/vaadin-multi-select-combo-box.css */
vaadin-multi-select-combo-box[readonly][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: transparent;
    --vaadin-input-field-invalid-hover-highlight: transparent;
}

vaadin-multi-select-combo-box[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
    --vaadin-input-field-invalid-background: var(--lumo-contrast-5pct);
}

vaadin-multi-select-combo-box[disabled][has-error-message]::part(error-message),
vaadin-multi-select-combo-box[readonly][has-error-message]::part(error-message) {
    display: none;
}

/* jmix-lumo/components/vaadin-form-layout.css */
/* For removal! Works only with legacy @Theme. vaadin-form-layout doesn't support style injection */
:host([class~='master-detail-layout']) #layout {
  height: inherit;
  align-items: flex-start;
}


vaadin-form-item[theme~='jmix-group-filter-form-item']:not([label-position='top']) {
  align-items: center;
}

vaadin-form-item[theme~='jmix-group-filter-form-item']:not([label-position='top'])::part(label) {
  margin: 0;
}

vaadin-form-item[theme~='label-align-end']:not([label-position='top'])::part(label) {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

/* jmix-lumo/components/vaadin-grid.css */
vaadin-grid[theme~='no-header']::part(header-cell) {
  display: none;
}

/* Dialog overlay style like a popup */
vaadin-dialog[class~='column-filter-popup']::part(backdrop) {
  background: unset;
}

vaadin-dialog[class~='column-filter-dialog']::part(content) {
  display: flex;
  flex-direction: row;
  gap: var(--lumo-space-s);
  padding: var(--lumo-space-wide-m);
}

vaadin-dialog[class~='column-filter-popup']::part(overlay) {
  align-self: flex-start;
  position: absolute;
}

vaadin-dialog[class~='column-filter-footer-small']::slotted([slot='footer']) {
  display: flex;
  gap: var(--lumo-space-s);
  width: 100%;
}

/* Styles for the column-filter button */
[jmix-role='column-filter-button']:not([activated]):hover {
  color: var(--lumo-contrast);
}

[jmix-role='column-filter-button']:not([activated]) {
  color: var(--lumo-tertiary-text-color);
}

[jmix-role='column-filter-button']:is([activated]) {
  color: var(--lumo-primary-text-color);
}

/* jmix-lumo/components/vaadin-notification-card.css */
.jmix-text-layout-closeable .title,
.jmix-text-layout-closeable .message,
.jmix-text-layout .title,
.jmix-text-layout .message {
  white-space: pre-wrap;
}

.jmix-text-layout-closeable .title,
.jmix-text-layout .title {
  font-size: var(--lumo-font-size-l);
  font-weight: 600;
  margin: 0;
  text-align: center;
}

.jmix-text-layout-closeable .message,
.jmix-text-layout .message {
  margin-top: 0;
  margin-bottom: 0;
}

.jmix-closeable-layout {
  display: flex;
  align-items: flex-start;
  gap: var(--lumo-space-s)
}

.jmix-closeable-layout .close-button {
  color: inherit;

  position: absolute;
  right: 0;
  top: 0;

  font-size: inherit;
  line-height: inherit;

  padding: 0px;
  margin: 0px;

  min-width: 0px;
  height: auto;

  --vaadin-button-background: transparent;
}

.jmix-closeable-layout .close-button::part(label) {
  line-height: inherit;
  overflow: visible;
  padding: 0px;
}

vaadin-notification-card:not([slot$='stretch']) .jmix-closeable-layout {
  padding-inline-end: var(--lumo-space-xs);
}

vaadin-notification-card[slot$='stretch'] .jmix-closeable-layout .close-button {
  margin-top: var(--lumo-space-s);
  margin-inline-end: var(--lumo-space-s);
}

vaadin-notification-card:not([slot$='stretch']) .jmix-closeable-layout .close-button {
  margin-top: var(--lumo-space-xs);
  margin-inline-end: var(--lumo-space-xs);
}

vaadin-notification-card[slot$='stretch'] .jmix-text-layout-closeable {
  padding-inline-start: unset;
}

vaadin-notification-card[theme~='warning'] .jmix-text-layout-closeable .title,
vaadin-notification-card[theme~='warning'] .jmix-text-layout .title {
  color: var(--lumo-warning-contrast-color);
}

vaadin-notification-card[theme~='contrast'] .jmix-text-layout-closeable .title,
vaadin-notification-card[theme~='contrast'] .jmix-text-layout .title {
  color: var(--lumo-base-color);
}

vaadin-notification-card[theme~='error'] .jmix-text-layout-closeable .title,
vaadin-notification-card[theme~='error'] .jmix-text-layout .title {
  color: var(--lumo-error-contrast-color);
}

vaadin-notification-card[theme~='success'] .jmix-text-layout-closeable .title,
vaadin-notification-card[theme~='success'] .jmix-text-layout .title {
  color: var(--lumo-success-contrast-color);
}

vaadin-notification-card[theme~='primary'] .jmix-text-layout-closeable .title,
vaadin-notification-card[theme~='primary'] .jmix-text-layout .title {
  color: var(--lumo-primary-contrast-color);
}

vaadin-notification-card::part(overlay) {
  display: flex;
  justify-content: center;
  position: relative;
}

/* jmix-lumo/components/vaadin-split-layout.css */
vaadin-split-layout[theme~='splitter-spacing'] {
  gap: var(--lumo-space-s);
}

/* jmix-lumo/components/vaadin-checkbox.css */
vaadin-checkbox[readonly][has-error-message]::part(error-message),
vaadin-checkbox[disabled][has-error-message]::part(error-message) {
    display: none;
}

vaadin-checkbox[readonly][invalid],
vaadin-checkbox[disabled][invalid] {
    --lumo-required-field-indicator-color: var(--lumo-primary-text-color);
}


/* jmix-lumo/src/app/index.css */
/* jmix-lumo/src/app/data-grid-empty-state-by-permissions-fragment.css */
.data-grid-empty-state-by-permissions-fragment {
    column-gap: var(--lumo-space-s);
}

.data-grid-empty-state-by-permissions-fragment .empty-state-icon {
    color: var(--lumo-error-contrast);
    width: 1em;
    height: 1em;
}

/* jmix-lumo/src/app/data-grid-renderers.css */
.jmix-popover-renderer-popover::part(content) {
    padding: var(--lumo-space-m);

    max-width: var(--jmix-popover-renderer-max-width, 30rem);
    max-height: var(--jmix-popover-renderer-max-height, 20rem);
}

/* Markdown content gets block margins from Vaadin's base styles, which would add up with the popover padding. */
.jmix-popover-renderer-content > :first-child {
    margin-block-start: 0;
}

.jmix-popover-renderer-content > :last-child {
    margin-block-end: 0;
}

.jmix-popover-renderer-button {
    display: inline-block;
    box-sizing: border-box;

    /* An inline-block with overflow: hidden takes its bottom edge as the baseline, which would leave
       room for the descenders below it and push the text above the plain text of neighbouring cells. */
    vertical-align: top;

    --_color: var(--lumo-primary-text-color);
    color: var(--_color);
    font-weight: 500;

    position: relative;
    max-width: 100%;

    overflow: hidden;
    text-overflow: ellipsis;

    cursor: var(--lumo-clickable-cursor);
}

.jmix-popover-renderer-button:hover {
    color: oklch(from var(--_color) calc(l - 0.15) c h);
}

/* jmix-lumo/src/app/date-interval-dialog.css */
.date-interval-dialog .type-selector {
    flex-shrink: 0;
}

.date-interval-dialog .content-box {
    flex-grow: 1;
}

/* jmix-lumo/src/app/exception-dialog-window.css */
.jmix-exception-dialog-window-content textarea {
  background-color: var(--lumo-contrast-20pct);
  border: 0;
  border-radius: var(--lumo-border-radius-m);
  box-sizing: border-box;
  font-family: var(--lumo-font-family);
  font-size: var(--lumo-font-size-m);
  line-height: var(--lumo-line-height-s);
  outline: none;
  padding: calc(var(--lumo-size-s) - 1em * var(--lumo-line-height-s));
  resize: none;
}

.jmix-exception-dialog-window-content textarea:focus {
  box-shadow: 0 0 0 2px var(--lumo-primary-color-50pct);
}

.jmix-exception-dialog-window-content .jmix-exception-dialog-window-message-textarea {
  width: 100%;
  height: 100px;
}

.jmix-exception-dialog-window-content .jmix-exception-dialog-window-stacktrace-textarea {
  width: 100%;
  flex-grow: 1;
}

/* jmix-lumo/src/addons/index.css */
/* Free */

/* jmix-lumo/src/addons/aitools/index.css */
/* jmix-lumo/src/addons/aitools/ai-chat-fragment.css */
/*
 * The fragment is a full-size flex layout. The outer view owns clipping and
 * page padding; the canvas applies the single readable max-width for header,
 * timeline, composer, and prompt suggestions.
*/
.ai-chat-fragment {
    box-sizing: border-box;
    min-height: 0;
    overflow: hidden;

    /* Single centered canvas that imposes the 68rem max-width.
       Every child inside just uses width: 100% - no per-component max-width needed. */
    .chat-layout {
        box-sizing: border-box;
        align-self: center;
        flex: 1 1 auto;
        margin: 0 auto;
        max-width: var(--jmix-ai-conversation-canvas-max-width, 68rem);
        min-height: 0;
        padding: var(--lumo-space-m);
        width: 100%;
    }

    .chat-title-layout {
        box-sizing: border-box;
        padding-bottom: var(--lumo-space-s);
        gap: var(--lumo-space-s);
        /* Let the title shrink and ellipsize instead of pushing the row wider. */
        min-width: 0;
    }

    .chat-title {
        flex: 1 1 auto;
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .chat-content-layout {
        box-sizing: border-box;
        flex: 1 1 auto;
        min-height: 0;
        overflow: hidden;
        padding: var(--lumo-space-xs) 0;
    }

    .chat-timeline-list {
        flex: 1 1 auto;
        min-height: 0;
        width: 100%;
    }

    .chat-input-container {
        padding: 0 var(--lumo-space-xs);
    }
}

/* jmix-lumo/src/addons/aitools/ai-chat-hub-fragment.css */
.ai-chat-hub {
    box-sizing: border-box;
    min-height: 0;
    overflow: hidden;

    .chat-hub-scroll {
        box-sizing: border-box;
        flex: 1 1 auto;
        min-height: 0;
        overflow-y: auto;
    }

    /* One centered reading column for the whole starter. Narrower than the
       conversation timeline canvas — starter has composer + 2-col cards, the
       reading line stays comfortable around 54rem. Override with the
       --jmix-ai-chat-hub-canvas-max-width custom property. */
    .chat-hub-canvas {
        box-sizing: border-box;
        align-self: center;
        margin: 0 auto;
        max-width: var(--jmix-ai-chat-hub-canvas-max-width, 54rem);
        padding: var(--lumo-space-m);
        width: 100%;
        gap: var(--lumo-space-m);
    }

    .chat-hub-heading {
        text-align: center;
        gap: var(--lumo-space-xs);
    }

    .chat-hub-title {
        margin: 0;
    }

    .chat-hub-subtitle {
        color: var(--lumo-secondary-text-color);
        font-size: var(--lumo-font-size-m);
    }

    .chat-hub-hero-icon-glyph {
        height: 2.5rem;
        width: 2.5rem;
        color: var(--lumo-primary-color);
    }

    .chat-hub-section-header {
        gap: var(--lumo-space-s);
    }

    .chat-hub-section-rule {
        border-top: 1px solid var(--lumo-contrast-10pct);
        flex: 1 1 auto;
    }
}

/* Conversation cards — recent grid and the history panel (which may render in an
   overlay), so these are top-level selectors rather than nested under the root. */
.chat-hub-card {
    /* vaadin-card requires a single length here (used by inner calc(... * -1)). */
    --vaadin-card-padding: var(--lumo-space-s);
    --vaadin-card-gap: var(--lumo-space-xs);
}

/* The card body is a link now: drop the link look, keep the stacked layout the
   layout component used to give it, and show a focus ring - the body became
   keyboard-reachable. */
.chat-hub-card-body {
    color: inherit;
    display: flex;
    flex-direction: column;
    min-width: 0;
    padding: 0;
    text-decoration: none;
}

/* Lumo re-underlines links on hover through `a:where(:any-link):hover`. Its `:where()` adds no
   specificity, but the remaining `a:hover` still outweighs the single class above, so the reset has to
   be restated for the hover state. Aura needs no counterpart - it underlines links nowhere. */
.chat-hub-card-body:hover {
    text-decoration: none;
}

.chat-hub-card-body:focus-visible {
    outline: var(--vaadin-focus-ring-width, 2px) solid
        var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
    outline-offset: var(--vaadin-focus-ring-width, 2px);
}

.chat-hub-card-title-row {
    gap: var(--lumo-space-s);
    min-width: 0;
}

/* Own the title weight and the date colour/size rather than relying on Lumo
   utility classes (font-bold / text-secondary / text-xs), which the consuming
   app's theme may not bundle. */
.chat-hub-card-title {
    font-size: var(--lumo-font-size-m);
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}

.chat-hub-card-date {
    color: var(--lumo-secondary-text-color);
    font-size: var(--lumo-font-size-xs);
}

.chat-hub-card-icon {
    color: var(--lumo-primary-color);
    flex: none;
    height: 1.25rem;
    width: 1.25rem;
}

.ai-assistant-icon {
    flex: none;
}

/* Recent chats: force exactly two columns (overrides the grid's responsive
   auto-fit template via the exposed shadow part), collapsing to one column on
   narrow screens. Outer ::part rules win over the component's own shadow part
   styles for normal declarations, so no !important is needed — and an add-on
   shouldn't impose it, leaving apps free to override. */
.chat-hub-recent-grid::part(items) {
    grid-gap: var(--lumo-space-s);
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

@media (max-width: 720px) {
    .chat-hub-recent-grid::part(items) {
        grid-template-columns: 1fr;
    }
}

/* History side panel content. */
.chat-hub-history-content {
    box-sizing: border-box;
    padding: var(--lumo-space-s);
    gap: var(--lumo-space-s);

    .chat-hub-history-title {
        margin: 0;
    }

    .chat-hub-history-empty {
        color: var(--lumo-secondary-text-color);
        font-size: var(--lumo-font-size-s);
    }

    .chat-hub-history-title-group {
        gap: var(--lumo-space-m);
    }

    .chat-hub-history-count {
        /* Inherits the shared badge look from the rule below. */
    }

    .chat-hub-history-header-spacer {
        flex: 1 1 auto;
    }

    .chat-hub-history-list {
        flex: 1 1 auto;
        min-height: 0;
        overflow-y: auto;
        gap: var(--lumo-space-s);
    }

    .chat-hub-history-group {
        gap: var(--lumo-space-s);
    }

    .chat-hub-history-group-header {
        gap: var(--lumo-space-m);
        padding: var(--lumo-space-xs) 0;
    }

    .chat-hub-history-bucket {
        color: var(--lumo-secondary-text-color);
        font-size: var(--lumo-font-size-xs);
        font-weight: 600;
    }

    .chat-hub-history-group-count {
        /* Inherits the shared badge look from the rule below. */
    }
}

/* Shared pill-badge look for the panel-header count and per-bucket count.
   Rectangular: horizontal padding gives single and multi-digit counts equal
   breathing room; vertical padding + a slightly relaxed line-height keep the
   text comfortably inside the box (no clipping on tall digits). */
.chat-hub-history-count,
.chat-hub-history-group-count {
    align-items: center;
    background: var(--lumo-contrast-10pct);
    border-radius: var(--lumo-border-radius-s);
    box-sizing: border-box;
    color: var(--lumo-secondary-text-color);
    display: inline-flex;
    font-size: var(--lumo-font-size-xs);
    font-weight: 500;
    justify-content: center;
    line-height: var(--lumo-line-height-m);
    padding: 0 var(--lumo-space-xs);
}

/* jmix-lumo/src/addons/aitools/ai-chat-input-fragment.css */
.ai-chat-input {
    width: 100%;

    .ai-chat-input-bar {
        align-items: flex-end;
        gap: var(--lumo-space-s);
    }

    .ai-chat-input-textarea {
        flex: 1 1 auto;
    }
}

/* jmix-lumo/src/addons/aitools/ai-timeline-item-renderer.css */
.timeline-row-host {
    .chat-timeline-list::part(items) {
        box-sizing: border-box;
        padding: var(--lumo-space-s) var(--lumo-space-m) var(--lumo-space-l) var(--lumo-space-m);
    }

    .timeline-message-row {
        box-sizing: border-box;
        padding: var(--lumo-space-s) 0;
        padding-inline-end: var(--vaadin-horizontal-layout-gap, var(--lumo-space-m));
        width: 100%;
    }

    .timeline-message-body {
        min-width: 0;
    }

    .timeline-message-header {
        color: var(--lumo-secondary-text-colory);
        font-size: var(--lumo-font-size-xs);
        margin-bottom: var(--lumo-space-xs);
    }

    .timeline-message-actor {
        color: var(--lumo-body-text-colo);
        font-weight: 700;
    }

    .timeline-message-time {
        color: var(--lumo-tertiary-text-color);
    }

    .timeline-user-text {
        display: block;
        white-space: pre-wrap;
    }

    .timeline-avatar-container {
        /* Almost equal to Avatar sizes */
        --_size: var(--vaadin-avatar-size, calc(1lh + var(--vaadin-padding-block-container) * 2 + var(--vaadin-focus-ring-width)));
        display: flex;
        align-items: center;
        justify-content: center;
        min-width: calc(var(--_size) + var(--lumo-space-xs));
    }

    .timeline-avatar {
        flex: 0 0 auto;
        margin: 0;
    }

    .timeline-avatar-assistant {
        --_size: var(--vaadin-avatar-size, calc(1lh + var(--vaadin-padding-block-container) * 2 + var(--vaadin-focus-ring-width)));
        height: var(--_size);
        width: var(--_size);
        background: var(--vaadin-avatar-background, var(--vaadin-background-container-strong));
        background-clip: content-box;
        border: var(--vaadin-focus-ring-width) solid transparent;
        align-items: center;
        border-radius: 50%;
        box-sizing: border-box;
        display: inline-flex;
        justify-content: center;
        background-color: var(--lumo-primary-color);
        color: var(--lumo-primary-contrast-color);
        position: relative;
    }

    .timeline-avatar-assistant::before {
        position: absolute;
        content: '';
        inset: calc(var(--vaadin-focus-ring-width) * -1);
        border-radius: inherit;
        outline: var(--vaadin-avatar-border-width, 1px) solid var(--vaadin-avatar-border-color, transparent);
        outline-offset: calc((var(--vaadin-focus-ring-width) + var(--vaadin-avatar-border-width, 1px)) * -1);
    }

    /* Markdown output
       ---------------
       Assistant messages can include tables, links, and headings. The rules here
       constrain generated markdown so wide report tables scroll horizontally and
       document-style headings do not overpower the chat timeline. */

    .timeline-markdown {
        box-sizing: border-box;
        display: block;
        line-height: 1.45;
        max-width: 100%;
        min-width: 0;
        overflow: hidden;
        width: 100%;
    }

    .timeline-markdown table {
        border-collapse: separate;
        border-spacing: 0;
        display: block;
        font-size: var(--lumo-font-size-s);
        margin: var(--lumo-space-m) 0;
        max-width: 100%;
        overflow-x: auto;
        width: 100%;
    }

    .timeline-markdown thead {
        background: var(--lumo-contrast-5pct);
    }

    .timeline-markdown th,
    .timeline-markdown td {
        border-bottom: 1px solid var(--lumo-contrast-10pct);
        box-sizing: border-box;
        padding: var(--lumo-space-xs) var(--lumo-space-s);
        text-align: left;
        vertical-align: top;
        white-space: nowrap;
    }

    .timeline-markdown th {
        color: var(--lumo-header-text-color);
        font-weight: 700;
    }

    .timeline-markdown th[align="right"],
    .timeline-markdown td[align="right"] {
        text-align: right;
    }

    .timeline-markdown th:last-child,
    .timeline-markdown td:last-child {
        min-width: 24rem;
        white-space: normal;
    }

    .timeline-markdown a {
        white-space: nowrap;
    }

    .timeline-markdown p:first-child {
        margin-top: 0;
    }

    .timeline-markdown p:last-child {
        margin-bottom: 0;
    }

    /* Dial down the default heading sizes - the LLM uses h2/h3 generously and the
       Lumo defaults are tuned for stand-alone document headings, which looks
       oversized inside the chat bubble. */
    .timeline-markdown h1 {
        font-size: var(--lumo-font-size-l);
    }

    .timeline-markdown h2 {
        font-size: var(--lumo-font-size-l);
    }

    .timeline-markdown h3 {
        font-size: var(--lumo-font-size-m);
    }

    .timeline-markdown h4 {
        font-size: var(--lumo-font-size-s);
    }


    /* Thinking indicator
       ------------------
       Replaces the old ProgressBar with text shimmer plus a thin moving bar. Tool
       status lines are appended under the shimmer as deterministic work completes. */

    .timeline-thinking-text {
        background: linear-gradient(90deg, var(--lumo-primary-color) 0%, var(--lumo-secondary-text-color) 50%, var(--lumo-primary-color) 100%);
        background-size: 200% 100%;
        -webkit-background-clip: text;
        background-clip: text;
        color: transparent;
        -webkit-text-fill-color: transparent;
        display: inline-block;
        font-size: var(--lumo-font-size-s);
        font-weight: 500;
        animation: jmix-aitls-timeline-thinking-text-shimmer 2s linear infinite;
    }

    .timeline-thinking-shimmer {
        background-color: var(--lumo-contrast-10pct);
        border-radius: var(--lumo-border-radius-s);
        height: 2px;
        margin-top: var(--lumo-space-xs);
        overflow: hidden;
        position: relative;
        width: 12rem;
        max-width: 100%;
    }

    .timeline-thinking-shimmer::after {
        background: linear-gradient(90deg, transparent 0%, var(--lumo-primary-color) 50%, transparent 100%);
        content: "";
        height: 100%;
        left: 0;
        position: absolute;
        top: 0;
        width: 35%;
        animation: jmix-aitls-timeline-thinking-shimmer 1.2s linear infinite;
    }

    .timeline-thinking-status-list {
        gap: 0.125rem;
        margin-top: var(--lumo-space-xs);
    }

    .timeline-thinking-status-item {
        color: var(--lumo-secondary-text-color);
        font-size: var(--lumo-font-size-xs);
        line-height: 1.3;
    }

    .timeline-thinking-status-result {
        opacity: 0.7;
        font-style: italic;
    }
}

@keyframes jmix-aitls-timeline-thinking-text-shimmer {
    0% {
        background-position: 100% 0;
    }
    100% {
        background-position: -100% 0;
    }
}

@keyframes jmix-aitls-timeline-thinking-shimmer {
    0% {
        left: -35%;
    }
    100% {
        left: 100%;
    }
}

/* Respect the user's reduced-motion preference: stop the thinking-indicator
   animations. The shimmer text stays as a static gradient, and the moving bar
   settles into a steady full-width glow instead of a frozen highlight segment. */
@media (prefers-reduced-motion: reduce) {
    .timeline-row-host {
        .timeline-thinking-text {
            animation: none;
        }

        .timeline-thinking-shimmer::after {
            animation: none;
            width: 100%;
        }
    }
}


/* jmix-lumo/src/addons/audit/index.css */
/* jmix-lumo/src/addons/audit/entity-log-view.css */
.entity-log-view {
    container-type: inline-size;
    container-name: entity-log-view;
}

.entity-log-view jmix-tabsheet.content-root::part(content) {
    padding: var(--lumo-space-s) var(--lumo-space-m) var(--lumo-space-m) var(--lumo-space-m);
}

.entity-log-view vaadin-details.filter-layout {
    margin-bottom: 0;
}

.entity-log-view .data-grid-wrapper {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(42rem, 1fr));
    gap: var(--lumo-space-m);
}

.entity-log-view .setup-logged-entity-wrapper {
    flex-direction: column;
}

@container entity-log-view (min-width: 65em) {

    .entity-log-view .setup-logged-entity-wrapper {
        flex-direction: row;
    }

    .entity-log-view .logged-entity-details-wrapper {
        width: 100%;
    }
}

/* jmix-lumo/src/addons/audit/misc.css */
.audit-datetime-picker-container {
    display: flex;
    align-items: baseline;
    gap: calc(var(--lumo-space-xs) / 2);
}

.audit-datetime-picker-container vaadin-date-picker {
    min-width: 0;
    flex: 1 1 auto; /*same as for Vaadin Date Time Picker date-part*/
}

.audit-datetime-picker-container vaadin-time-picker {
    min-width: 0;
    flex: 1 1.65 auto; /*same as for Vaadin Date Time Picker time-part*/
}

/* jmix-lumo/src/addons/datatools/index.css */
/* jmix-lumo/src/addons/datatools/data-model-list-view.css */
.data-model-list-view {
    container-type: inline-size;
    container-name: data-model-list-view;
}

.data-model-list-view .content-wrapper {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: var(--lumo-space-m);
}

@container data-model-list-view (max-width: 1280px) {
    .data-model-list-view .content-wrapper {
        grid-template-columns: 1fr 1fr;
    }
}

@container data-model-list-view (max-width: 960px) {
    .data-model-list-view .content-wrapper {
        grid-template-columns: 1fr;
    }
}

/* jmix-lumo/src/addons/dynattr/index.css */
/* jmix-lumo/src/addons/dynattr/attribute-enumeration-detail-view.css */
.attribute-enumeration-detail-view .values-box {
    flex-grow: 1; width: unset;
}

.attribute-enumeration-detail-view .localization-box {
    flex-grow: 4; width: unset;
}

/* jmix-lumo/src/addons/dynattr/category-attributes-detail-view.css */
.category-attributes-detail-view :is(.main-tab-wrapper, .advanced-tab-wrapper) {
    padding-bottom: 0;
}

.category-attributes-detail-view :is(.target-views-box, .script-box) {
    padding-bottom: var(--lumo-space-m);
}

.category-attributes-detail-view .suffix-helper-button {
    padding-top: 1.9em;
}

/* jmix-lumo/src/addons/dynattr/category-list-view.css */
.category-list-view {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(40rem, 1fr));
}

/* jmix-lumo/src/addons/fullcalendar/index.css */
/* jmix-lumo/src/addons/fullcalendar/jmix-full-calendar.css */
jmix-full-calendar {
   --fc-small-font-size: var(--lumo-font-size-s);
   --fc-page-bg-color: var(--lumo-base-color);
   --fc-neutral-bg-color: var(--lumo-contrast-10pct);
   --fc-neutral-text-color: var(--lumo-secondary-text-color);
   --fc-border-color: var(--lumo-contrast-20pct);
   --fc-event-bg-color: var(--lumo-primary-color-50pct);
   --fc-event-border-color: var(--lumo-primary-color-50pct);
   --fc-event-text-color: var(--lumo-primary-contrast-color);
   --fc-event-selected-overlay-color: var(--lumo-primary-color-10pct);
   --fc-list-event-hover-bg-color: var(--lumo-contrast-5pct);

   /* TimeGrid events stack "show more" background-color */
   --fc-more-link-bg-color: #a6a6a6;
   --fc-more-link-text-color: inherit;                     /* default */
   --fc-event-resizer-thickness: 8px;                      /* default */
   --fc-event-resizer-dot-total-width: 8px;                /* default */
   --fc-event-resizer-dot-border-width: 1px;               /* default */
   --fc-non-business-color: var(--lumo-contrast-5pct);
   --fc-bg-event-color: rgb(143, 223, 130);                /* default */
   --fc-bg-event-opacity: 0.3;                             /* default */
   --fc-highlight-color: var(--lumo-primary-color-10pct);
   --fc-today-bg-color: rgba(255, 220, 40, 0.15);          /* default */
   --fc-now-indicator-color: red;                          /* default */
}

jmix-full-calendar .fc-event {
    border-radius: var(--lumo-border-radius-m);
    padding-left: var(--lumo-space-xs);
    padding-right: var(--lumo-space-xs);
}

jmix-full-calendar .fc-event:focus-visible {
    border-radius: var(--lumo-border-radius-m);
    box-shadow: 0 0 0 var(--vaadin-focus-ring-width, 2px) var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
    outline: 0;
}

jmix-full-calendar .fc .fc-highlight {
    background-image: linear-gradient(var(--fc-highlight-color), var(--fc-highlight-color));
    background-repeat: repeat;
    box-shadow: 0 1px 0 0 var(--fc-highlight-color);
}

jmix-full-calendar .fc-more-link:hover {
    background-color: var(--lumo-contrast-10pct);
}

jmix-full-calendar .fc-daygrid-day-number:focus-visible,
jmix-full-calendar .fc-daygrid-week-number:focus-visible {
    border-radius: var(--lumo-border-radius-m);
    box-shadow: 0 0 0 var(--vaadin-focus-ring-width, 2px) var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
    outline: 0;
}

jmix-full-calendar .fc-timegrid-event:hover,
jmix-full-calendar .fc-daygrid-block-event:hover {
    cursor: var(--lumo-clickable-cursor);
    filter: brightness(0.9) contrast(1.2);
}

jmix-full-calendar .fc-daygrid-dot-event.fc-event-mirror,
jmix-full-calendar .fc-daygrid-dot-event:hover {
    cursor: var(--lumo-clickable-cursor);
    background-color: var(--lumo-contrast-5pct);
}

/* More link in events stack in time slots */
jmix-full-calendar .fc-timegrid-col-events .fc-more-link:hover {
    filter: brightness(0.9) contrast(1.2);
    background-color: var(--fc-more-link-bg-color);
}

jmix-full-calendar .jmix-day-cell-bottom-text {
    padding: var(--lumo-space-xs);
}

jmix-full-calendar .fc-daygrid-day.jmix-has-bottom-text {
    position: relative;
}

/* Workaround cause the fixed issue is not really fixed?
   https://github.com/fullcalendar/fullcalendar/issues/5532 */
.fc-more-popover {
    max-height: 95%;
    overflow-y: auto;
}

jmix-full-calendar a:not(:any-link) {
    color: var(--lumo-body-text-color);
}

jmix-full-calendar .jmix-day-cell-bottom-text {
    position: absolute;
    bottom: 0;
    right: 0;
}

/* jmix-lumo/src/addons/jmxconsole/index.css */
/* jmix-lumo/src/addons/jmxconsole/jmix-mbean-operation.css */
.jmix-mbean-operation .jmix-mbean-operation-content {
    padding-bottom: 0;
    padding-top: 0;
}

/* jmix-lumo/src/addons/messagetemplates/index.css */
/* jmix-lumo/src/addons/messagetemplates/jmix-grapes-js.css */
:root {
    --gjs-primary-color: var(--lumo-base-color);
    --gjs-secondary-color: var(--lumo-contrast-60pct);
    --gjs-tertiary-color: var(--lumo-primary-text-color);
    --gjs-quaternary-color: var(--lumo-primary-text-color);
}

/* jmix-lumo/src/addons/messagetemplates/message-template-block-detail-view.css */
.message-template-block-detail-view .attributes-editor {
    padding: 0;
}

.message-template-block-detail-view .icon-renderer {
    display: flex;
    align-items: center;
    gap: var(--lumo-space-s);
}

.message-template-block-detail-view .icon-renderer-icon {
    margin-inline-start: var(--lumo-space-s);
}

/* jmix-lumo/src/addons/messagetemplates/message-template-detail-view.css */
.message-template-detail-view .main-split {
    gap: var(--lumo-space-s);
}


/* jmix-lumo/src/addons/pivottable/index.css */
/* jmix-lumo/src/addons/pivottable/jmix-pivot-table.css */
jmix-pivot-table {
    .pvtUi {
        color: var(--lumo-body-text-color);
    }

    table.pvtTable {
        font-size: var(--lumo-font-size-m);
        font-family: var(--lumo-font-family);
        font-weight: var(--jmix-pivot-table-font-weight-normal, 400);
        text-align: left;
        border-collapse: collapse;
    }

    table.pvtTable thead tr th,
    table.pvtTable tbody tr th {
        border: 1px solid var(--lumo-contrast-20pct);
        padding: var(--lumo-space-s);
    }

    table.pvtTable .pvtColLabel {
        text-align: center;
    }

    table.pvtTable .pvtTotalLabel {
        text-align: right;
    }

    table.pvtTable tbody tr td {
        border: 1px solid var(--lumo-contrast-20pct);
        padding: var(--lumo-space-s);
        vertical-align: top;
        text-align: right;
    }

    .pvtVals {
        text-align: center;
        white-space: nowrap;
    }

    .pvtRowOrder,
    .pvtColOrder {
        cursor: pointer;
        width: var(--lumo-space-m);
        margin-left: var(--lumo-space-s);
        display: inline-block;
    }

    .pvtAxisContainer,
    .pvtVals {
        border: 1px solid var(--lumo-contrast-20pct);
        background: var(--lumo-base-color);
        padding: var(--lumo-space-xs);
        min-width: var(--lumo-space-l);
        min-height: var(--lumo-space-l);
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -khtml-user-select: none;
        -ms-user-select: none;
    }

    .pvtAxisContainer li {
        padding: var(--lumo-space-s) var(--lumo-space-xs);
        list-style-type: none;
        cursor: move;
    }

    .pvtAxisContainer li.pvtPlaceholder {
        -webkit-border-radius: var(--lumo-space-xs);
        padding: var(--lumo-space-xs) var(--lumo-space-m);
        -moz-border-radius: var(--lumo-space-xs);
        border-radius: var(--lumo-space-xs);
        border: 1px dashed var(--lumo-contrast-20pct);
    }

    .pvtAxisContainer li span.pvtAttr {
        -webkit-text-size-adjust: 100%;
        padding: 2px var(--lumo-space-xs);
        white-space: nowrap;
        -webkit-border-radius: var(--lumo-space-xs);
        -moz-border-radius: var(--lumo-space-xs);
        border-radius: var(--lumo-space-xs);
    }

    .pvtTriangle {
        cursor: pointer;
    }

    .pvtHorizList li {
        display: inline;
    }

    .pvtVertList {
        vertical-align: top;
    }

    .pvtFilterBox {
        z-index: 100;
        width: 18rem;
        position: absolute;
        text-align: center;
    }

    .pvtFilterBox h4 {
        margin: var(--lumo-space-m);
    }

    .pvtFilterBox p {
        margin: var(--lumo-space-s) auto;
    }

    .pvtFilterBox label {
        font-weight: var(--jmix-pivot-table-font-weight-normal, 400);
    }

    .pvtFilterBox input[type='checkbox'] {
        margin-right: var(--lumo-space-s);
        margin-left: var(--lumo-space-s);
    }

    .pvtFilterBox input[type='text'] {
        width: 14rem;
    }

    .pvtFilterBox .count {
        color: var(--lumo-contrast-50pct);
        font-weight: var(--jmix-pivot-table-font-weight-normal, 400);
        margin-left: var(--lumo-space-xs);
    }

    .pvtCheckContainer {
        text-align: left;
        font-size: var(--lumo-space-m);
        white-space: nowrap;
        overflow-y: scroll;
        width: 100%;
        max-height: 16rem;
        border-top: 1px solid var(--lumo-contrast-10pct);
        border-bottom: 1px solid var(--lumo-contrast-10pct);
    }

    .pvtCheckContainer p {
        margin: var(--lumo-space-xs);
    }

    .pvtRendererArea {
        padding: 0px;
    }

    select {
        appearance: none;
        -webkit-appearance: none;
        background: var(--lumo-contrast-10pct);
        border-radius: var(--lumo-border-radius-s);
        border-color: transparent;
        height: var(--lumo-size-m);
        padding: var(--lumo-space-xs) var(--lumo-space-xl) var(--lumo-space-xs) var(--lumo-space-s);
        box-sizing: border-box;
        color: var(--lumo-body-text-color);
        font-size: var(--lumo-font-size-m);
        font-weight: var(--jmix-pivot-table-font-weight-bold, 500);
        font-family: var(--lumo-font-family);
        border: 1px solid transparent;
        background-image: url('data:image/svg+xml;utf8,<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6.780692 9.39493c-.43905-.393718-1.11414-.356968-1.507858.082082-.393716.43905-.356966 1.114141.082084 1.507858l5.864118 5.381134c.405651.363767 1.020124.363767 1.425775 0l6.000272-5.503229c.43905-.393717.4758-1.068807.082083-1.507857-.393717-.43905-1.068808-.4758-1.507858-.082083l-5.287384 4.863949-5.151232-4.741855z" opacity="0.5"/></svg>');
        background-size: calc(var(--lumo-size-m) * 1) calc(var(--lumo-size-m) * 0.55);
        background-position: center right;
        background-repeat: no-repeat;
    }

    select:hover {
        background-color: var(--lumo-contrast-20pct);
        background-image: url('data:image/svg+xml;utf8,<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6.780692 9.39493c-.43905-.393718-1.11414-.356968-1.507858.082082-.393716.43905-.356966 1.114141.082084 1.507858l5.864118 5.381134c.405651.363767 1.020124.363767 1.425775 0l6.000272-5.503229c.43905-.393717.4758-1.068807.082083-1.507857-.393717-.43905-1.068808-.4758-1.507858-.082083l-5.287384 4.863949-5.151232-4.741855z" opacity="0.7"/></svg>');
    }

    select:focus {
        box-shadow: 0 0 0 2px var(--lumo-primary-color-50pct);
        outline: none;
    }

    .pvtAttrDropdown {
        margin-top: var(--lumo-space-xs);
    }

    th {
        background-color: var(--lumo-contrast-20pct);
    }

    .pvtAttr {
        width: 30em;
        border-color: transparent;
        background-color: var(--lumo-contrast-5pct);
        border-radius: var(--lumo-border-radius-m);
        padding: var(--lumo-space-xs) var(--lumo-space-s) !important;
        height: var(--lumo-size-s);
        font-size: var(--lumo-font-size-s) ;
        font-weight: var(--jmix-pivot-table-font-weight-bold, 500);
        font-family: var(--lumo-font-family);
        color: var(--lumo-primary-text-color);
    }

    .pvtTriangle {
        width: 0px;
        visibility: hidden;
    }

    .pvtTriangle::after {
        font-family: 'Vaadin-Icons';
        color: var(--lumo-primary-text-color);
        content: '\e7bc';
        width: 0.3em;
        height: 0.3em;
        position: relative;
        visibility: visible;
    }

    .pvtFilteredAttribute {
        font-style: italic;
    }

    .pvtFilterBox button {
        appearance: none;
        -webkit-appearance: none;
        background: var(--lumo-primary-color);
        border: transparent;
        border-radius: var(--lumo-border-radius-m);
        height: var(--lumo-size-s);
        color: var(--lumo-primary-contrast-color);
        font-size: var(--lumo-font-size-m);
        font-weight: var(--jmix-pivot-table-font-normal, 400);
        font-family: var(--lumo-font-family);
    }

    .pvtFilterBox button:first-child {
        margin-right: var(--lumo-space-s);
        font-family: var(--lumo-font-family);
        font-weight: var(--jmix-pivot-table-font-weight-bold, 500);
    }

    .pvtFilterBox button:first-child::before {
        font-family: 'Vaadin-Icons';
        content: '\e75B';
        font-weight: var(--jmix-pivot-table-font-normal, 400);
        padding: 0.25em;
    }

    .pvtFilterBox button:last-child {
        background: var(--lumo-contrast-5pct);
        color: var(--lumo-primary-text-color);
        font-family: var(--lumo-font-family);
        font-weight: var(--jmix-pivot-table-font-weight-bold, 500);
    }

    .pvtFilterBox button:last-child::before {
        font-family: 'Vaadin-Icons';
        content: '\e6f7';
        font-weight: var(--jmix-pivot-table-font-normal, 400);
        padding: 0.25em;
    }

    .pvtFilterBox {
        box-shadow: var(--lumo-box-shadow-xl);
        border-radius: calc(var(--lumo-size-xs) * 0.25);
        background-color: var(--lumo-base-color);
        background-image: linear-gradient(var(--lumo-tint-5pct), var(--lumo-tint-5pct));
    }

    .pvtSearch {
        appearance: none;
        -webkit-appearance: none;
        background-color: var(--lumo-contrast-10pct);
        border-radius: var(--lumo-border-radius-m);
        border-color: transparent;
        height: var(--lumo-size-m);
        padding: var(--lumo-space-xs) var(--lumo-space-xl) var(--lumo-space-xs) var(--lumo-space-s);
        box-sizing: border-box;
        color: var(--lumo-body-text-color);
        font-size: var(--lumo-font-size-m);
        font-weight: var(--jmix-pivot-table-font-weight-bold, 500);
        font-family: var(--lumo-font-family);
        border: 1px solid transparent;
    }

    .pvtSearch {
        margin-bottom: var(--lumo-space-s);
    }

    .pvtSearch:hover {
        background-color: var(--lumo-contrast-20pct);
    }

    .pvtSearch:focus {
        box-shadow: 0 0 0 2px var(--lumo-primary-color-50pct);
        outline: none;
    }

    .pvtUiCell {
        border: 1px solid var(--lumo-contrast-20pct);
    }

    th, td {
        font-weight: var(--jmix-pivot-table-font-weight-normal, 400);
    }

    td .pvtTotal {
        font-weight: var(--jmix-pivot-table-font-weight-bold, 500);
    }

    td .pvtGrandTotal {
        font-weight: var(--jmix-pivot-table-font-weight-extra-bold, 700);
    }

    select.pvtAttrDropdown {
        margin-right: var(--lumo-space-xs);
    }

    /* Set transparent color to avoid blinking of row and column order original symbol  */
    a.pvtRowOrder, a.pvtColOrder {
        color: #FFFFFF00;
    }

    a.pvtRowOrder::before, a.pvtColOrder::before {
        font-family: 'Vaadin-Icons';
        color: var(--lumo-primary-text-color);
    }

    a.pvtRowOrder.key-a-to-z::before {
        content: '\e754';
    }

    a.pvtRowOrder.value-a-to-z::before {
        content: '\e74e';
    }

    a.pvtRowOrder.value-z-to-a::before {
        content: '\e753';
    }

    a.pvtColOrder.key-a-to-z::before {
        content: '\e751';
    }

    a.pvtColOrder.value-a-to-z::before {
        content: '\e752';
    }

    a.pvtColOrder.value-z-to-a::before {
        content: '\e74f';
    }

    a.pvtRowOrder.disabled, a.pvtColOrder.disabled {
        cursor: default;

    }

    a.pvtRowOrder.disabled::before, a.pvtColOrder.disabled::before {
        color: var(--lumo-disabled-text-color);
    }

    .pvtRenderer {
        min-width: 7em;
        width: 100%;
    }

    span.pvtAttr.disabled .pvtTriangle {
        display: none;
    }

    span.pvtAttr.disabled {
        color: var(--lumo-disabled-text-color);
        cursor: default;
    }

    li.ui-sortable-handle.disabled {
        cursor:default;
    }
}

html[theme~="dark"] jmix-pivot-table {
    --jmix-pivot-table-select-option-background-color: var(--lumo-base-color);

    .c3-axis-y text, .c3-axis-x text {
        fill: var(--lumo-body-text-color);
    }

    select {
        background-image: url('data:image/svg+xml;utf8,<svg width="24" height="24" viewBox="0 0 24 24" fill="%23ffffff" xmlns="http://www.w3.org/2000/svg"><path d="M6.780692 9.39493c-.43905-.393718-1.11414-.356968-1.507858.082082-.393716.43905-.356966 1.114141.082084 1.507858l5.864118 5.381134c.405651.363767 1.020124.363767 1.425775 0l6.000272-5.503229c.43905-.393717.4758-1.068807.082083-1.507857-.393717-.43905-1.068808-.4758-1.507858-.082083l-5.287384 4.863949-5.151232-4.741855z" opacity="0.5"/></svg>');
    }

    select option {
        background-color: var(--jmix-pivot-table-select-option-background-color);
    }

    select:hover {
        background-image: url('data:image/svg+xml;utf8,<svg width="24" height="24" viewBox="0 0 24 24" fill="%23ffffff" xmlns="http://www.w3.org/2000/svg"><path d="M6.780692 9.39493c-.43905-.393718-1.11414-.356968-1.507858.082082-.393716.43905-.356966 1.114141.082084 1.507858l5.864118 5.381134c.405651.363767 1.020124.363767 1.425775 0l6.000272-5.503229c.43905-.393717.4758-1.068807.082083-1.507857-.393717-.43905-1.068808-.4758-1.507858-.082083l-5.287384 4.863949-5.151232-4.741855z" opacity="0.7"/></svg>');
    }
}


/* jmix-lumo/src/addons/quartz/index.css */
/* jmix-lumo/src/addons/quartz/job-model-list-view.css */
.job-model-list-view vaadin-grid::part(quartz-job-invalid) {
    color: var(--lumo-error-color-50pct);
}

/* jmix-lumo/src/addons/reports/index.css */
/* jmix-lumo/src/addons/reports/misc.css */
.report-field-icon {
    cursor: var(--lumo-clickable-cursor);
}

.report-field-icon-size {
    padding: 0.25em;
}

.report-wizard-tip-label {
    font-size: medium;
    display: block;
    padding: calc(0.5em + var(--lumo-border-radius-l));
    line-height: normal;
}

/* jmix-lumo/src/addons/reports/report-detail-view.css */
.help-dialog-json code {
    background-color: transparent;
}

.report-detail-view :is(.flex-layout, .multi-data-set-layout) {
    gap: var(--lumo-space-m);
}

.report-detail-view .bands-layout {
    flex-grow: 1;
    flex-basis: 20em;
}

.report-detail-view .bands-details-layout {
    flex-grow: 1;
    flex-basis: 30em;
}

.report-detail-view .data-sets-data-grid-layout {
    flex-grow: 1;
    min-width: 20em;
}

.report-detail-view .data-set-details-layout {
    flex-grow: 2;
    min-width: 15em;
}

.report-detail-view .parameters-layout {
    flex-grow: 1;
    flex-basis: 45em;
}

.report-detail-view .parameters-validate-layout {
    flex-grow: 1;
    flex-basis: 30em;
}

.report-detail-view .roles-layout {
    flex-grow: 1;
    flex-basis: 30em;
}

.report-detail-view .views-layout {
    flex-grow: 1;
    flex-basis: 30em;
}

.report-detail-view .field-label {
    color: var(--vaadin-input-field-label-color, var(--lumo-secondary-text-color));
    font-weight: var(--vaadin-input-field-label-font-weight, 500);
    font-size: var(--vaadin-input-field-label-font-size, var(--lumo-font-size-s));
}

.report-detail-view .llm-editor-block {
    flex: 1 1 0;
}

.report-detail-view .llm-data-set-panel vaadin-badge {
    max-width: 100%;
    height: auto;
    white-space: normal;
    align-items: flex-start;
}

.report-detail-view .llm-query-notes {
    max-height: 8em;
    overflow-y: auto;
}

/* jmix-lumo/src/addons/reports/report-template-detail-view.css */
.report-template-detail-view .template-form {
    max-width: 40em;
}

.report-template-detail-view .code-editor-box {
    margin-top: var(--lumo-space-s);
    margin-bottom: var(--lumo-space-s);
}

.report-template-detail-view .code-editor-box jmix-code-editor[has-label] {
    padding: 0;
}

/* jmix-lumo/src/addons/reports/report-wizard-creator-view.css */
.report-wizard-creator-view .footer-buttons-panel {
    margin-top: var(--lumo-space-m);
}

/* jmix-lumo/src/addons/reports/table-edit-fragment.css */
.table-edit-fragment {
    max-width: 40em;
}

.table-edit-fragment .data-grids-box {
    max-width: 40em;
    gap: var(--lumo-space-m);
}

.table-edit-fragment .band-box {
    min-width: 15em;
}

/* jmix-lumo/src/addons/search/index.css */
/* jmix-lumo/src/addons/search/jmix-full-text-filter.css */
.jmix-full-text-filter {
    gap: var(--lumo-space-s);
}

/* jmix-lumo/src/addons/search/search-results-view.css */
.search-results-view .search-result-renderer {
    margin-top: var(--lumo-space-l);
    gap: var(--lumo-space-s);
}

.search-results-view .search-result-renderer-hit-layout {
    gap: var(--lumo-space-xs);
}

/* jmix-lumo/src/addons/security/index.css */
/* jmix-lumo/src/addons/security/change-password-view.css */
.force-change-password-view .dialog-close-button {
    display: none;
}

/* jmix-lumo/src/addons/security/reset-password-view.css */
.reset-password-view .sub-label {
    color: var(--lumo-secondary-text-color);
    font-size: var(--lumo-font-size-s);
}

.reset-password-view .warning-message {
    margin-top: var(--lumo-space-l);
}

.reset-password-view .required-change-checkbox {
    margin-top: var(--lumo-space-m);
}

.reset-password-view .warning-icon {
    padding: var(--lumo-space-xs);
}

.reset-password-view vaadin-password-field[readonly][class~='reset-password-field'] {
    --vaadin-input-field-readonly-border: transparent;
}

.reset-password-view vaadin-password-field[readonly][class~='reset-password-field']::part(reveal-button) {
    color: var(--lumo-contrast);
}

vaadin-button.copy-button {
    color: var(--lumo-contrast);
    padding: 0 calc(var(--_button-size) / 6);
    --vaadin-button-border: none;
    --vaadin-button-background: transparent;
}

vaadin-button.copy-button-copied {
    color: var(--lumo-success-text-color);
}

/* jmix-lumo/src/addons/security/role-assignment-view.css */
.role-assignment-view {
    container-type: inline-size;
    container-name: role-assignment-view;
}

.role-assignment-view .content-wrapper {
    flex-direction: column;

    overflow: auto;
    gap: var(--lumo-space-m);
    padding: var(--lumo-space-m);
}

@container role-assignment-view (min-width: 60em) {
    .role-assignment-view .content-wrapper {
        flex-direction: row;
    }
}

/* jmix-lumo/src/addons/security/substitute-user-view.css */
.substitute-user-view .user-filter {
    box-sizing: border-box;
    padding: var(--lumo-space-m) var(--lumo-space-m) 0;
}


/* Premium */

/* jmix-lumo/src/addons/aichat/index.css */
/* jmix-lumo/src/addons/aichat/ai-chat.css */
/* shared/src/addons/aichat/ai-chat.css */
.jmix-ai-chat {
  display: flex;
  flex-direction: column;
  gap: var(--vaadin-gap-m);
  height: 100%;
  box-sizing: border-box;
  --jmix-ai-message-list-max-width: var(--jmix-ai-chat-max-width, 768px);
  --jmix-ai-message-input-max-width: var(--jmix-ai-chat-max-width, 768px);
}

.jmix-ai-chat jmix-ai-message-list {
  flex: 1 1 auto;
  min-height: 0;
  width: 100%;
}

.jmix-ai-chat .jmix-ai-chat-empty-header,
.jmix-ai-chat .jmix-ai-chat-empty-footer {
  width: 100%;
  max-width: var(--jmix-ai-message-input-max-width, 768px);
  margin-inline: auto;
}

.jmix-ai-chat[empty] {
  justify-content: center;
}

.jmix-ai-chat[empty] jmix-ai-message-list {
  display: none;
}

.jmix-ai-chat[empty]:not([theme~='input-header-component-always-visible']) jmix-ai-message-input::part(header) {
  display: none;
}

.jmix-ai-chat[empty]:not([theme~='input-footer-component-always-visible']) jmix-ai-message-input::part(footer) {
  display: none;
}

.jmix-ai-chat:not([empty]) .jmix-ai-chat-empty-header,
.jmix-ai-chat:not([empty]) .jmix-ai-chat-empty-footer {
  display: none;
}

.jmix-ai-chat .screen-reader-only {
  border-width: 0;
  clip: rect(0, 0, 0, 0);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  white-space: nowrap;
  width: 1px;
}


.jmix-ai-chat {
  gap: var(--lumo-space-m);
}

/* jmix-lumo/src/addons/aichat/ai-code-block.css */
/**
 * @license
 * Lucide icons (https://lucide.dev): copy, check, text-wrap, text-align-start.
 *
 * ISC License
 *
 * Copyright (c) 2026 Lucide Icons and Contributors
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 *
 * The check icon is derived from Feather (https://feathericons.com) and is also
 * covered by the MIT License:
 *
 * The MIT License (MIT)
 *
 * Copyright (c) 2013-present Cole Bemis
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

@media lumo_components_jmix-ai-code-block {
  :host {
    --jmix-ai-code-block-color-text: light-dark(#24292e, #c9d1d9);
    --jmix-ai-code-block-color-keyword: light-dark(#d73a49, #ff7b72);
    --jmix-ai-code-block-color-string: light-dark(#032f62, #a5d6ff);
    --jmix-ai-code-block-color-comment: light-dark(#6a737d, #8b949e);
    --jmix-ai-code-block-color-number: light-dark(#005cc5, #79c0ff);
    --jmix-ai-code-block-color-title: light-dark(#6f42c1, #d2a8ff);
    --jmix-ai-code-block-color-type: light-dark(#953800, #ffa657);
    --jmix-ai-code-block-color-built-in: light-dark(#e36209, #ffa657);
    --jmix-ai-code-block-color-attr: light-dark(#005cc5, #79c0ff);
    --jmix-ai-code-block-color-tag: light-dark(#22863a, #7ee787);
    --jmix-ai-code-block-color-meta: light-dark(#6a737d, #8b949e);

    --jmix-ai-code-block-icon-copy: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect width='14' height='14' x='8' y='8' rx='2' ry='2'/><path d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/></svg>");
    --jmix-ai-code-block-icon-check: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M20 6 9 17l-5-5'/></svg>");
    --jmix-ai-code-block-icon-wrap: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><line x1='3' x2='21' y1='6' y2='6'/><path d='M3 12h15a3 3 0 1 1 0 6h-4'/><polyline points='16 16 14 18 16 20'/><line x1='3' x2='10' y1='18' y2='18'/></svg>");
    --jmix-ai-code-block-icon-no-wrap: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M21 5H3'/><path d='M15 12H3'/><path d='M17 19H3'/></svg>");

    --_focus-ring-color: var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
    --_focus-ring-width: var(--vaadin-focus-ring-width, 2px);

    --_action-icon-size: var(--jmix-ai-code-block-action-icon-size, var(--lumo-font-size-l));
    --_action-padding: var(--lumo-space-s);
    --_actions-gap: var(--jmix-ai-code-block-actions-gap, var(--lumo-space-xs));
    --_actions-inset: var(--lumo-space-s);

    display: flex;
    flex-direction: column;
    position: relative;
    max-width: 100%;
    color: var(--jmix-ai-code-block-color-text);
    background: var(--jmix-ai-code-block-background, light-dark(#f6f8fa, #161b22));
    border: 1px solid var(--lumo-contrast-20pct);
    border-radius: var(--jmix-ai-code-block-border-radius, var(--lumo-border-radius-l));
    overflow: hidden;
    font-size: var(--jmix-ai-code-block-font-size, var(--lumo-font-size-s));
  }

  :host([hidden]) {
    display: none !important;
  }

  [part='header'] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--lumo-space-s) var(--lumo-space-xs) var(--lumo-space-s) var(--lumo-space-m);
    font-family: var(--lumo-font-family);
    font-size: var(--lumo-font-size-xxs);
  }

  [part='language'] {
    color: var(--jmix-ai-code-block-color-comment);
    letter-spacing: 0.02em;
  }

  [part='actions'] {
    display: inline-flex;
    gap: var(--_actions-gap);
  }

  [part='actions'].floating {
    position: absolute;
    top: var(--_actions-inset);
    inset-inline-end: var(--_actions-inset);
  }

  [part='content'] {
    flex: 1 1 auto;
    min-width: 0;
    min-height: 0;
    margin: 0;
    padding: 0 var(--lumo-space-m) var(--lumo-space-m);
    overflow: auto;
    border-radius: inherit;
    font-family: var(--jmix-ai-code-block-font-family, ui-monospace, SFMono-Regular, Menlo, monospace);
    line-height: 1.55;
    scrollbar-width: thin;
    scrollbar-color: light-dark(oklch(0% 0 none / 0.05), oklch(100% 0 none / 0.05)) transparent;
  }

  [part='content']:focus {
    outline: none;
  }

  [part='content']:focus-visible {
    outline: none;
    box-shadow: inset 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
  }

  [part='content'].no-toolbar {
    padding-top: var(--lumo-space-s);
    margin-inline-end: calc(
      var(--_actions-inset) + 2 * (var(--_action-icon-size) + 2 * var(--_action-padding)) + 2 * var(--_actions-gap)
    );
  }

  [part='code'] {
    white-space: pre;
  }

  :host([code-wrapped]) [part='code'] {
    white-space: pre-wrap;
    word-break: break-word;
  }

  [part='copy-button'],
  [part='wrap-button'] {
    display: inline-grid;
    place-items: center;
    padding: var(--_action-padding);
    border: none;
    border-radius: var(--lumo-border-radius-m);
    background: transparent;
    color: var(--jmix-ai-code-block-color-comment);
    cursor: var(--lumo-clickable-cursor, pointer);
  }

  [part='copy-button']:hover,
  [part='wrap-button']:hover {
    color: var(--jmix-ai-code-block-color-text);
    background: var(--lumo-contrast-5pct);
  }

  [part='copy-button']:focus-visible,
  [part='wrap-button']:focus-visible {
    outline: none;
    box-shadow: 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
  }

  [part='copy-button']::before,
  [part='copy-button']::after,
  [part='wrap-button']::before {
    content: '';
    grid-area: 1 / 1;
    width: var(--_action-icon-size);
    height: var(--_action-icon-size);
    background: currentColor;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: 100%;
    mask-size: 100%;
  }

  [part='copy-button']::before {
    -webkit-mask-image: var(--jmix-ai-code-block-icon-copy);
    mask-image: var(--jmix-ai-code-block-icon-copy);
  }

  [part='copy-button']::after {
    background: var(--jmix-ai-code-block-color-success, var(--lumo-success-color));
    -webkit-mask-image: var(--jmix-ai-code-block-icon-check);
    mask-image: var(--jmix-ai-code-block-icon-check);
    opacity: 0;
    transform: scale(0.4);
  }

  [part='copy-button'][copied]::before {
    opacity: 0;
    transform: scale(0.5);
    transition:
      opacity 120ms ease,
      transform 120ms ease;
  }

  [part='copy-button'][copied]::after {
    opacity: 1;
    transform: scale(1);
    transition:
      opacity 100ms ease 50ms,
      transform 220ms cubic-bezier(0.34, 1.56, 0.64, 1) 50ms;
  }

  @media (prefers-reduced-motion: reduce) {
    [part='copy-button'][copied]::before,
    [part='copy-button'][copied]::after {
      transition: none;
    }
  }

  [part='wrap-button']::before {
    -webkit-mask-image: var(--jmix-ai-code-block-icon-no-wrap);
    mask-image: var(--jmix-ai-code-block-icon-no-wrap);
  }
  :host([code-wrapped]) [part='wrap-button']::before {
    -webkit-mask-image: var(--jmix-ai-code-block-icon-wrap);
    mask-image: var(--jmix-ai-code-block-icon-wrap);
  }

  .hljs-keyword,
  .hljs-literal,
  .hljs-selector-tag {
    color: var(--jmix-ai-code-block-color-keyword);
  }
  .hljs-string,
  .hljs-regexp,
  .hljs-symbol {
    color: var(--jmix-ai-code-block-color-string);
  }
  .hljs-comment,
  .hljs-quote {
    color: var(--jmix-ai-code-block-color-comment);
    font-style: italic;
  }
  .hljs-number {
    color: var(--jmix-ai-code-block-color-number);
  }
  .hljs-title,
  .hljs-title.function_,
  .hljs-section {
    color: var(--jmix-ai-code-block-color-title);
  }
  .hljs-type,
  .hljs-title.class_,
  .hljs-class .hljs-title {
    color: var(--jmix-ai-code-block-color-type);
  }
  .hljs-built_in {
    color: var(--jmix-ai-code-block-color-built-in);
  }
  .hljs-attr,
  .hljs-attribute,
  .hljs-variable {
    color: var(--jmix-ai-code-block-color-attr);
  }
  .hljs-tag,
  .hljs-name {
    color: var(--jmix-ai-code-block-color-tag);
  }
  .hljs-meta {
    color: var(--jmix-ai-code-block-color-meta);
  }

  @media (forced-colors: active) {
    [part='content']:focus-visible {
      outline: 2px solid;
      outline-offset: -2px;
    }

    [part='copy-button']:focus-visible,
    [part='wrap-button']:focus-visible {
      outline: 2px solid;
      outline-offset: -2px;
    }

    [part='copy-button']::before,
    [part='copy-button']::after,
    [part='wrap-button']::before {
      forced-color-adjust: none;
      background: ButtonText;
    }
  }
}

:root,
:host {
  --_lumo-jmix-ai-code-block-inject: 1;
  --_lumo-jmix-ai-code-block-inject-modules: lumo_components_jmix-ai-code-block;
}

/* jmix-lumo/src/addons/aichat/ai-markdown.css */
jmix-ai-markdown {
  --_jmix-ai-markdown-link-color-default: var(--lumo-primary-text-color);
}

/* jmix-lumo/src/addons/aichat/ai-message-shared.css */
/**
 * @license
 * Lucide icons (https://lucide.dev): copy, check, refresh-cw, file.
 *
 * ISC License
 *
 * Copyright (c) 2026 Lucide Icons and Contributors
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 *
 * The check icon is derived from Feather (https://feathericons.com) and is also
 * covered by the MIT License:
 *
 * The MIT License (MIT)
 *
 * Copyright (c) 2013-present Cole Bemis
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

/* shared/src/addons/aichat/ai-message-actions.css */
:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font: inherit;
  padding: var(--jmix-ai-message-action-padding, var(--vaadin-padding-s));
  border: none;
  border-radius: var(--jmix-ai-message-action-border-radius, var(--vaadin-radius-m));
  background: transparent;
  color: var(--vaadin-text-color-secondary);
  cursor: pointer;
}

:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action:hover {
  background: var(--vaadin-background-container);
  color: var(--vaadin-text-color);
}

:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action:focus-visible {
  outline: var(--vaadin-focus-ring-width) solid var(--vaadin-focus-ring-color);
}

:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action :is(vaadin-icon, img),
:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action-copy::before,
:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action-copy::after,
:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action-regenerate::before {
  width: var(--jmix-ai-message-action-icon-size, var(--_jmix-ai-message-action-icon-size-default, 1.125em));
  height: var(--jmix-ai-message-action-icon-size, var(--_jmix-ai-message-action-icon-size-default, 1.125em));
}

:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action vaadin-icon[icon-class~='jmix-font-icon'] {
  --vaadin-icon-visual-size: var(--jmix-ai-message-action-icon-size, var(--_jmix-ai-message-action-icon-size-default, 1.125em));
}

:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action vaadin-icon[icon-class~='jmix-font-icon-lumo'] {
  --vaadin-icon-visual-size: calc(1.5 * var(--jmix-ai-message-action-icon-size, var(--_jmix-ai-message-action-icon-size-default, 1.125em)));
}

:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action-copy {
  display: inline-grid;
  place-items: center;
}

:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action-copy::before {
  content: '';
  grid-area: 1 / 1;
  background: currentColor;
  -webkit-mask: var(--jmix-ai-message-icon-copy) center / contain no-repeat;
  mask: var(--jmix-ai-message-icon-copy) center / contain no-repeat;
}

:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action-copy::after {
  content: '';
  grid-area: 1 / 1;
  background: var(--jmix-ai-message-success-color, var(--_jmix-ai-message-success-color-default, light-dark(#2e7d32, #66bb6a)));
  -webkit-mask: var(--jmix-ai-message-icon-check) center / contain no-repeat;
  mask: var(--jmix-ai-message-icon-check) center / contain no-repeat;
  opacity: 0;
  transform: scale(0.4);
}

:where(jmix-ai-user-message, jmix-ai-assistant-message) > [copied].jmix-ai-message-action-copy::before {
  opacity: 0;
  transform: scale(0.5);
  transition:
    opacity 120ms ease,
    transform 120ms ease;
}

:where(jmix-ai-user-message, jmix-ai-assistant-message) > [copied].jmix-ai-message-action-copy::after {
  opacity: 1;
  transform: scale(1);
  transition:
    opacity 100ms ease 50ms,
    transform 220ms cubic-bezier(0.34, 1.56, 0.64, 1) 50ms;
}

@media (prefers-reduced-motion: reduce) {
  :where(jmix-ai-user-message, jmix-ai-assistant-message) > [copied].jmix-ai-message-action-copy::before,
  :where(jmix-ai-user-message, jmix-ai-assistant-message) > [copied].jmix-ai-message-action-copy::after {
    transition: none;
  }
}

:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action-regenerate::before {
  content: '';
  display: block;
  background: currentColor;
  -webkit-mask: var(--jmix-ai-message-icon-regenerate) center / contain no-repeat;
  mask: var(--jmix-ai-message-icon-regenerate) center / contain no-repeat;
}

@media (forced-colors: active) {
  :where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action:focus-visible {
    outline: 2px solid;
  }

  :where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action-copy::before,
  :where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action-copy::after,
  :where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action-regenerate::before {
    forced-color-adjust: none;
    background: ButtonText;
  }
}


@media lumo_components_jmix-ai-message-shared {
  :host {
    display: flex;
    flex-direction: column;
    color: var(--lumo-body-text-color);
    font-family: var(--lumo-font-family);
    font-size: var(--lumo-font-size-m);
    line-height: var(--lumo-line-height-m);
    padding: var(--jmix-ai-message-padding, var(--lumo-space-s) var(--lumo-space-m));
    -moz-osx-font-smoothing: grayscale;
    -webkit-font-smoothing: antialiased;
    -webkit-text-size-adjust: 100%;
    --_focus-ring-color: var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
    --_focus-ring-width: var(--vaadin-focus-ring-width, 2px);
    --jmix-ai-message-icon-copy: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect width='14' height='14' x='8' y='8' rx='2' ry='2'/><path d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/></svg>");
    --jmix-ai-message-icon-check: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M20 6 9 17l-5-5'/></svg>");
    --jmix-ai-message-icon-regenerate: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8'/><path d='M21 3v5h-5'/><path d='M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16'/><path d='M8 16H3v5'/></svg>");
    --jmix-ai-message-icon-file: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z'/><path d='M14 2v4a2 2 0 0 0 2 2h4'/></svg>");
  }

  :host([hidden]) {
    display: none !important;
  }

  :host(:is(:focus-visible, [focus-ring])) {
    outline: none;
    box-shadow: inset 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
  }

  [part='content'] {
    display: flex;
    flex-direction: column;
    gap: var(--lumo-space-xs);
    min-width: 0;
  }

  :host(:not([has-message])) [part='content'] {
    gap: 0;
  }

  [part='message'] {
    font-size: var(--jmix-ai-message-font-size, inherit);
    line-height: var(--jmix-ai-message-line-height, inherit);
    color: var(--jmix-ai-message-text-color, inherit);
  }

  [part='actions'] {
    display: flex;
    align-items: center;
    gap: var(--lumo-space-xs);
    margin-top: var(--lumo-space-xs);
    position: relative;
    opacity: 0;
    transition: opacity 0.12s ease-in-out;
    pointer-events: none;
  }

  :host(:hover) [part='actions'],
  :host(:focus-within) [part='actions'] {
    opacity: 1;
    pointer-events: auto;
  }

  @media (hover: none) {
    [part='actions'] {
      opacity: 1;
      pointer-events: auto;
    }
  }

  :host(:not([has-actions])) [part='actions'] {
    display: none;
  }

  [part='attachments'] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: var(--lumo-space-xs);
  }

  [part~='attachment'] {
    display: inline-flex;
    align-items: center;
    font: inherit;
    max-width: 100%;
    padding: 0;
    border: none;
    border-radius: var(--lumo-border-radius-m);
    background: var(--lumo-contrast-5pct);
    color: var(--lumo-body-text-color);
    cursor: var(--lumo-clickable-cursor, pointer);
    overflow: hidden;
  }

  [part~='attachment-file'] {
    gap: var(--lumo-space-xs);
    padding: var(--lumo-space-xs) var(--lumo-space-s);
  }

  [part~='attachment-file']:hover {
    background: var(--lumo-contrast-10pct);
  }

  [part~='attachment-image'] {
    width: var(--jmix-ai-message-attachment-image-size, 4rem);
    height: var(--jmix-ai-message-attachment-image-size, 4rem);
  }

  [part='attachment-preview'] {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  [part='attachment-icon'] {
    flex: none;
    width: var(--lumo-font-size-l);
    height: var(--lumo-font-size-l);
    background: currentColor;
    -webkit-mask: var(--jmix-ai-message-icon-file) center / contain no-repeat;
    mask: var(--jmix-ai-message-icon-file) center / contain no-repeat;
  }

  [part='attachment-name'] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    border: 0;
    clip-path: inset(50%);
    overflow: hidden;
    white-space: nowrap;
  }

  @media (forced-colors: active) {
    :host(:is(:focus-visible, [focus-ring])) {
      outline: 2px solid;
      outline-offset: -2px;
    }

    [part='attachment-icon'] {
      forced-color-adjust: none;
      background: ButtonText;
    }
  }
}

:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action {
  padding: var(--jmix-ai-message-action-padding, var(--lumo-space-s));
  border-radius: var(--jmix-ai-message-action-border-radius, var(--lumo-border-radius-m));
  color: var(--lumo-secondary-text-color);
  cursor: var(--lumo-clickable-cursor, pointer);
}

:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action:hover {
  background: var(--lumo-contrast-5pct);
  color: var(--lumo-body-text-color);
}

:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action:focus-visible {
  outline: none;
  box-shadow: 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
}

:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action :is(vaadin-icon, img),
:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action-copy::before,
:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action-copy::after,
:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action-regenerate::before {
  width: var(--jmix-ai-message-action-icon-size, var(--lumo-font-size-l));
  height: var(--jmix-ai-message-action-icon-size, var(--lumo-font-size-l));
}

:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action vaadin-icon[icon-class~='jmix-font-icon'] {
  --vaadin-icon-visual-size: var(--jmix-ai-message-action-icon-size, var(--lumo-font-size-l));
}

:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action vaadin-icon[icon-class~='jmix-font-icon-lumo'] {
  --vaadin-icon-visual-size: calc(1.5 * var(--jmix-ai-message-action-icon-size, var(--lumo-font-size-l)));
}

:where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action-copy::after {
  background: var(--jmix-ai-message-success-color, var(--lumo-success-color));
}

@media (forced-colors: active) {
  :where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action:focus-visible {
    outline: 2px solid;
  }

  :where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action-copy::before,
  :where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action-copy::after,
  :where(jmix-ai-user-message, jmix-ai-assistant-message) > .jmix-ai-message-action-regenerate::before {
    forced-color-adjust: none;
    background: ButtonText;
  }
}

/* jmix-lumo/src/addons/aichat/ai-user-message.css */
/**
 * @license
 * Lucide icons (https://lucide.dev): chevron-down.
 *
 * ISC License
 *
 * Copyright (c) 2026 Lucide Icons and Contributors
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 *
 * The chevron-down icon is derived from Feather (https://feathericons.com) and
 * is also covered by the MIT License:
 *
 * The MIT License (MIT)
 *
 * Copyright (c) 2013-present Cole Bemis
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

@media lumo_components_jmix-ai-user-message {
  :host {
    align-items: flex-end;
    --jmix-ai-user-message-icon-chevron: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>");
  }

  :host [part='content'] {
    max-width: 75%;
    background: var(--lumo-contrast-5pct);
    border-radius: var(--lumo-border-radius-l);
    padding: var(--lumo-space-s) var(--lumo-space-m);
  }

  :host [part='message'] {
    white-space: pre-wrap;
    overflow-wrap: anywhere;
  }

  :host([collapsible]:not([expanded])) [part='message'] {
    max-height: var(--jmix-ai-user-message-collapsed-max-height, 12rem);
    overflow: hidden;
  }

  :host([collapsible]:not([expanded])) [part='message'] {
    -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 2.5rem), transparent);
    mask-image: linear-gradient(to bottom, #000 calc(100% - 2.5rem), transparent);
  }

  :host [part='collapse-toggle'] {
    align-self: flex-start;
    display: inline-flex;
    align-items: center;
    gap: var(--lumo-space-xs);
    padding: 0;
    border: none;
    background: transparent;
    color: var(--lumo-secondary-text-color);
    font: inherit;
    cursor: var(--lumo-clickable-cursor, pointer);
  }

  :host [part='collapse-toggle']:hover {
    color: var(--lumo-body-text-color);
  }

  :host [part='collapse-toggle']:focus-visible {
    outline: none;
    box-shadow: 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
  }

  :host [part='collapse-toggle']::after {
    content: '';
    width: 1em;
    height: 1em;
    background: currentColor;
    -webkit-mask: var(--jmix-ai-user-message-icon-chevron) center / contain no-repeat;
    mask: var(--jmix-ai-user-message-icon-chevron) center / contain no-repeat;
    transition: transform 0.12s ease-in-out;
  }

  :host([expanded]) [part='collapse-toggle']::after {
    transform: rotate(180deg);
  }

  @media (prefers-reduced-motion: reduce) {
    :host [part='collapse-toggle']::after {
      transition: none;
    }
  }

  @media (forced-colors: active) {
    :host([collapsible]:not([expanded])) [part='message'] {
      -webkit-mask-image: none;
      mask-image: none;
    }

    :host [part='collapse-toggle']:focus-visible {
      outline: 2px solid;
    }

    :host [part='collapse-toggle']::after {
      forced-color-adjust: none;
      background: ButtonText;
    }
  }
}

:root,
:host {
  --_lumo-jmix-ai-user-message-inject: 1;
  --_lumo-jmix-ai-user-message-inject-modules: lumo_components_jmix-ai-message-shared, lumo_components_jmix-ai-user-message;
}

/* jmix-lumo/src/addons/aichat/ai-assistant-message.css */
@media lumo_components_jmix-ai-assistant-message {
  :host [part='content'] {
    max-width: 100%;
  }

  ::slotted(jmix-ai-markdown) {
    display: block;
    white-space: normal;
  }

  :host([message-last-assistant]) [part='actions'] {
    opacity: 1;
    pointer-events: auto;
  }

  :host([message-state='generating']) [part='actions'] {
    display: none;
  }
}

:root,
:host {
  --_lumo-jmix-ai-assistant-message-inject: 1;
  --_lumo-jmix-ai-assistant-message-inject-modules: lumo_components_jmix-ai-message-shared, lumo_components_jmix-ai-assistant-message;
}

/* jmix-lumo/src/addons/aichat/ai-message-input.css */
/**
 * @license
 * Lucide icons (https://lucide.dev): arrow-up.
 *
 * ISC License
 *
 * Copyright (c) 2026 Lucide Icons and Contributors
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 *
 * The arrow-up icon is derived from Feather (https://feathericons.com) and is
 * also covered by the MIT License:
 *
 * The MIT License (MIT)
 *
 * Copyright (c) 2013-present Cole Bemis
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

@media lumo_components_jmix-ai-message-input {
  :host {
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    gap: var(--jmix-ai-message-input-gap, var(--lumo-space-m));
    width: 100%;
    max-width: var(--jmix-ai-message-input-max-width);
    margin-inline: auto;
    flex-shrink: 0;
    --_focus-ring-color: var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
    --_focus-ring-width: var(--vaadin-focus-ring-width, 2px);
    --jmix-ai-message-input-icon-send: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 19V5'/><path d='m5 12 7-7 7 7'/></svg>");
    --jmix-ai-message-input-icon-stop: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='currentColor'><rect x='6' y='6' width='12' height='12' rx='2'/></svg>");
  }

  :host([theme~='no-header-footer-gap']) {
    gap: 0;
  }

  :host([hidden]) {
    display: none !important;
  }

  [part='input-container'] {
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    gap: var(--jmix-ai-message-input-gap, var(--lumo-space-m));
    max-height: 50vh;
    padding: var(--jmix-ai-message-input-padding, var(--lumo-space-s));
    background: var(--jmix-ai-message-input-background, var(--lumo-base-color));
    box-shadow: inset 0 0 0 var(--vaadin-input-field-border-width, 1px)
      var(--vaadin-input-field-border-color, var(--lumo-contrast-30pct));
    border-radius: var(--vaadin-input-field-border-radius, var(--lumo-border-radius-l));
  }

  :host([focus-ring]:not([disabled])) [part='input-container']:focus-within {
    box-shadow: 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
  }

  :host([disabled]) {
    --jmix-ai-message-input-background: var(--lumo-contrast-5pct);
  }

  :host([disabled]) [part='input-container'] {
    box-shadow: none;
  }

  :host([dragover]) [part='input-container'] {
    outline: var(--_focus-ring-width) dashed var(--_focus-ring-color);
    outline-offset: calc(var(--_focus-ring-width) * -1);
  }

  [part='input-container'][dragover]::after {
    content: none;
  }

  @media (forced-colors: active) {
    [part='input-container'] {
      border: 1px solid CanvasText;
    }
  }

  [part='controls'] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: var(--jmix-ai-message-input-gap, var(--lumo-space-m));
  }

  [part='trailing'] {
    display: flex;
    align-items: center;
    gap: var(--jmix-ai-message-input-gap, var(--lumo-space-m));
  }

  ::slotted([slot='textarea']) {
    flex: 1 1 auto;
    min-width: 0;
    align-self: center;
    --vaadin-input-field-border-width: 0px !important;
    --vaadin-focus-ring-width: 0px;
    --vaadin-input-field-background: transparent !important;
    --vaadin-input-field-hover-highlight: transparent !important;
  }

  :host([expanded]) ::slotted([slot='textarea']),
  :host([theme~='fixed-toolbar']) ::slotted([slot='textarea']) {
    order: -1;
    flex-basis: 100%;
  }

  :host([expanded]) ::slotted([slot='prefix']),
  :host([theme~='fixed-toolbar']) ::slotted([slot='prefix']) {
    margin-inline-end: auto;
  }

  ::slotted([slot='attachments']) {
    max-width: 100%;
    flex-shrink: 0;
  }

  :host(:not([has-attachments])) [part='input-container'] {
    row-gap: 0;
  }
}

jmix-ai-message-input > vaadin-text-area::part(input-field) {
  background: transparent;
}

@media (forced-colors: active) {
  jmix-ai-message-input > vaadin-text-area::part(input-field) {
    outline: none;
  }
}

:root,
:host {
  --_lumo-jmix-ai-message-input-inject: 1;
  --_lumo-jmix-ai-message-input-inject-modules: lumo_components_jmix-ai-message-input;
}

/* jmix-lumo/src/addons/aichat/ai-message-input-button.css */
@media lumo_components_jmix-ai-message-input-button {
  :host {
    display: inline-block;
    position: relative;
    outline: none;
    -webkit-user-select: none;
    user-select: none;
    flex: none;
    align-self: center;
    --lumo-button-size: var(--lumo-size-m);
    --_button-size: var(--vaadin-button-height, var(--lumo-button-size));
    min-width: 0;
    width: var(--_button-size);
    height: var(--_button-size);
    padding: 0;
    margin: var(--vaadin-button-margin, 0);
    box-sizing: border-box;
    color: var(--vaadin-button-primary-text-color, var(--lumo-primary-contrast-color));
    background: var(--vaadin-button-primary-background, var(--lumo-primary-color));
    border: var(--vaadin-button-primary-border, none);
    border-radius: var(--vaadin-button-border-radius, var(--lumo-border-radius-m));
    cursor: var(--lumo-clickable-cursor);
    -webkit-tap-highlight-color: transparent;
    align-items: center;
    justify-content: center;
  }

  :host([hidden]) {
    display: none !important;
  }

  .vaadin-button-container {
    display: inline-flex;
    align-items: inherit;
    justify-content: inherit;
    width: 100%;
    height: 100%;
  }

  [part='label'] {
    flex: none;
    inline-size: var(--lumo-icon-size-m);
    block-size: var(--lumo-icon-size-m);
    background: currentColor;
    mask-image: var(--jmix-ai-message-input-icon-send);
    mask-repeat: no-repeat;
    mask-position: center;
    mask-size: contain;
    -webkit-mask-image: var(--jmix-ai-message-input-icon-send);
    -webkit-mask-repeat: no-repeat;
    -webkit-mask-position: center;
    -webkit-mask-size: contain;
  }

  :host([generating]) [part='label'] {
    mask-image: var(--jmix-ai-message-input-icon-stop);
    -webkit-mask-image: var(--jmix-ai-message-input-icon-stop);
  }

  :host::before,
  :host::after {
    content: '';
    position: absolute;
    z-index: 1;
    inset: 0;
    background-color: currentColor;
    border-radius: inherit;
    opacity: 0;
    pointer-events: none;
  }

  :host::before {
    background-color: black;
  }

  @media (any-hover: hover) {
    :host(:hover)::before {
      opacity: 0.05;
    }
  }

  :host::after {
    transition:
      opacity 1.4s,
      transform 0.1s;
    filter: blur(8px);
  }

  :host([active])::before {
    opacity: 0.1;
    transition-duration: 0s;
  }

  :host([active])::after {
    opacity: 0.2;
    transition-duration: 0s, 0s;
    transform: scale(0);
  }

  :host([focus-ring]) {
    box-shadow:
      0 0 0 1px var(--lumo-base-color),
      0 0 0 calc(var(--vaadin-focus-ring-width, 2px) + 1px)
        var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
  }

  :host([disabled]) {
    pointer-events: var(--_vaadin-button-disabled-pointer-events, none);
    cursor: not-allowed;
    background-color: var(--lumo-contrast-30pct);
    color: var(--lumo-base-color);
  }

  :host([disabled]) [part] {
    opacity: 0.7;
  }

  @media (forced-colors: active) {
    :host {
      forced-color-adjust: none;
    }

    [part='label'] {
      background: currentColor;
    }
  }
}

:root,
:host {
  --_lumo-jmix-ai-message-input-button-inject: 1;
  --_lumo-jmix-ai-message-input-button-inject-modules: lumo_components_jmix-ai-message-input-button;
}

/* jmix-lumo/src/addons/aichat/ai-upload-trigger.css */
@media lumo_components_jmix-ai-upload-trigger {
  :host([theme~='menu-item']) {
    --vaadin-button-background: transparent;
    --vaadin-button-border-color: transparent;
    --vaadin-button-font-weight: normal;

    width: 100%;
    justify-content: flex-start;
    color: inherit;
    height: auto;
    padding: 0;
    margin: 0;
  }

  :host([theme~='menu-item'])::before {
    content: none;
  }

  :host([theme~='menu-item']) .vaadin-button-container {
    gap: var(--lumo-space-s);
  }

  :host([theme~='menu-item']) .vaadin-button-container::before {
    content: none;
  }

  :host([theme~='menu-item']) [part='prefix'] {
    margin: 0;
  }

  :host([theme~='menu-item']) [part='label'] {
    padding: 0;
  }
}

:root,
:host {
  --_lumo-jmix-ai-upload-trigger-inject: 1;
  --_lumo-jmix-ai-upload-trigger-inject-modules: lumo_components_button, lumo_components_jmix-ai-upload-trigger;
}

/* jmix-lumo/src/addons/aichat/ai-message-list.css */
/**
 * @license
 * Lucide icons (https://lucide.dev): chevron-down, circle-alert, refresh-cw,
 * check.
 *
 * ISC License
 *
 * Copyright (c) 2026 Lucide Icons and Contributors
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 *
 * The chevron-down, circle-alert and check icons are derived from Feather
 * (https://feathericons.com) and are also covered by the MIT License:
 *
 * The MIT License (MIT)
 *
 * Copyright (c) 2013-present Cole Bemis
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

@media lumo_components_jmix-ai-message-list {
  :host {
    display: flex;
    flex-direction: column;
    position: relative;
    min-height: 0;
    font-family: var(--lumo-font-family);
    color: var(--lumo-body-text-color);
    --_focus-ring-color: var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
    --_focus-ring-width: var(--vaadin-focus-ring-width, 2px);
    --jmix-ai-message-list-icon-scroll-down: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>");
    --jmix-ai-message-list-icon-error: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='10'/><line x1='12' x2='12' y1='8' y2='12'/><line x1='12' x2='12.01' y1='16' y2='16'/></svg>");
    --jmix-ai-message-list-icon-retry: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8'/><path d='M21 3v5h-5'/><path d='M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16'/><path d='M3 21v-5h5'/></svg>");
    --jmix-ai-message-list-icon-check: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M20 6 9 17l-5-5'/></svg>");
  }

  :host([hidden]) {
    display: none !important;
  }

  [part='list'] {
    flex: 1;
    min-height: 0;
    overflow: auto;
    padding: var(--jmix-ai-message-list-padding, var(--lumo-space-xs) 0);
    scroll-padding: var(--jmix-ai-message-list-padding, var(--lumo-space-xs) 0);
    scrollbar-gutter: stable both-edges;
    scrollbar-color: var(--jmix-ai-message-list-scrollbar-color, var(--lumo-contrast-30pct)) transparent;
  }

  ::slotted(:is(jmix-ai-user-message, jmix-ai-assistant-message)) {
    box-sizing: border-box;
    width: 100%;
    max-width: var(--jmix-ai-message-list-max-width);
    margin-inline: auto;
  }

  [part='thinking'] {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    box-sizing: border-box;
    width: 100%;
    max-width: var(--jmix-ai-message-list-max-width);
    margin-inline: auto;
    padding: var(--jmix-ai-message-padding, var(--lumo-space-s) var(--lumo-space-m));
    color: var(--jmix-ai-thinking-indicator-color, currentColor);
  }

  [part='thinking-current'] {
    display: flex;
    align-items: center;
    gap: var(--lumo-space-s);
  }

  [part='thinking'][hidden] {
    display: none !important;
  }

  [part='thinking-label'] {
    font-size: var(--lumo-font-size-s);
  }

  [part='thinking-label']:empty {
    display: none;
  }

  [part='thinking-status-list'] {
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    gap: calc(var(--lumo-space-s) / 2);
    max-height: var(--jmix-ai-thinking-status-max-height, 7.5rem);
    overflow-y: auto;
    overflow-anchor: none;
    padding-block-start: 1.5rem;
    mask-image: linear-gradient(to bottom, transparent 0, black 1.5rem);
  }

  [part='thinking-status-list']:not(:empty) {
    margin-block-end: var(--lumo-space-s);
  }

  [part='thinking-status'] {
    display: flex;
    align-items: baseline;
    gap: calc(var(--lumo-space-s) / 2);
    font-size: var(--lumo-font-size-s);
  }

  [part='thinking-status-icon'] {
    flex: none;
    align-self: center;
    width: 0.875em;
    height: 0.875em;
    border: 1.5px solid currentColor;
    border-radius: 50%;
    border-inline-end-color: transparent;
    animation: jmix-ai-thinking-status-spin 0.9s linear infinite;
  }

  [part='thinking-status'][completed] [part='thinking-status-icon'] {
    border: none;
    border-radius: 0;
    animation: none;
    background: currentColor;
    -webkit-mask: var(--jmix-ai-message-list-icon-check) center / contain no-repeat;
    mask: var(--jmix-ai-message-list-icon-check) center / contain no-repeat;
  }

  [part='thinking-status-detail'] {
    color: var(--lumo-secondary-text-color);
  }

  @keyframes jmix-ai-thinking-status-spin {
    to {
      transform: rotate(360deg);
    }
  }

  @media (prefers-reduced-motion: reduce) {
    [part='thinking-status-icon'] {
      animation: none;
    }
  }

  @media (forced-colors: active) {
    [part='thinking-status-icon'] {
      forced-color-adjust: none;
      border-color: CanvasText;
      border-inline-end-color: transparent;
    }

    [part='thinking-status'][completed] [part='thinking-status-icon'] {
      forced-color-adjust: none;
      background: CanvasText;
    }
  }

  [part='scroll-to-bottom-button'] {
    position: absolute;
    bottom: var(--lumo-space-m);
    left: 50%;
    transform: translateX(-50%);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: var(--lumo-space-s);
    border-radius: 50%;
    border: 1px solid var(--lumo-contrast-10pct);
    background: var(--lumo-base-color);
    box-shadow: var(--lumo-box-shadow-s);
    cursor: var(--lumo-clickable-cursor, pointer);
    color: var(--lumo-secondary-text-color);
  }

  [part='scroll-to-bottom-button']::before {
    content: '';
    width: var(--jmix-ai-message-list-scroll-button-icon-size, 1.25rem);
    height: var(--jmix-ai-message-list-scroll-button-icon-size, 1.25rem);
    background: currentColor;
    -webkit-mask: var(--jmix-ai-message-list-icon-scroll-down) center / contain no-repeat;
    mask: var(--jmix-ai-message-list-icon-scroll-down) center / contain no-repeat;
  }

  [part='scroll-to-bottom-button'][hidden] {
    display: none !important;
  }

  [part='error'] {
    display: flex;
    align-items: center;
    gap: var(--lumo-space-s);
    box-sizing: border-box;
    width: 100%;
    max-width: var(--jmix-ai-message-list-max-width);
    margin: var(--lumo-space-s) auto;
    padding: var(--lumo-space-s) var(--lumo-space-m);
    border: 1px solid var(--lumo-contrast-10pct);
    border-radius: var(--lumo-border-radius-m);
    background: var(--lumo-contrast-5pct);
    color: var(--lumo-body-text-color);
    font-size: var(--jmix-ai-message-font-size, var(--lumo-font-size-m));
  }

  [part='error'][hidden] {
    display: none !important;
  }

  [part='error-icon'] {
    flex: none;
    width: var(--lumo-font-size-m);
    height: var(--lumo-font-size-m);
    background: var(--lumo-error-color);
    -webkit-mask: var(--jmix-ai-message-list-icon-error) center / contain no-repeat;
    mask: var(--jmix-ai-message-list-icon-error) center / contain no-repeat;
  }

  [part='error-text'] {
    flex: 1;
  }

  [part='retry-button'] {
    --vaadin-button-text-color: var(--vaadin-text-color);
  }

  [part='scroll-to-bottom-button']:focus-visible {
    outline: none;
    box-shadow:
      var(--lumo-box-shadow-s),
      0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
  }

  .retry-icon {
    display: flex;
    width: 1em;
    height: 1em;
    background: currentColor;
    -webkit-mask: var(--jmix-ai-message-list-icon-retry) center / contain no-repeat;
    mask: var(--jmix-ai-message-list-icon-retry) center / contain no-repeat;
  }

  @media (forced-colors: active) {
    [part='error-icon'],
    [part='scroll-to-bottom-button']::before,
    .retry-icon {
      forced-color-adjust: none;
      background: CanvasText;
    }
  }
}

:root,
:host {
  --_lumo-jmix-ai-message-list-inject: 1;
  --_lumo-jmix-ai-message-list-inject-modules: lumo_components_jmix-ai-message-list;
}


/* jmix-lumo/src/addons/bpm/index.css */
/* jmix-lumo/src/addons/bpm/bpmn-modeler-view.css */
.bpmn-modeler-view .schema-source-type {
    font-weight: 700;
    font-size: var(--lumo-font-size-m);
    margin-inline-end: var(--lumo-space-s);
}

.bpmn-modeler-view .schema-source-name {
    font-size: var(--lumo-font-size-m);
}

.bpmn-modeler-view .properties-container {
    overflow: auto;
}

.bpmn-modeler-view .bpm-modeler-bpmn-panel {
    margin-inline-end: var(--lumo-space-s);
}

.bpmn-modeler-view jmix-bpmn-modeler {
    border-radius: var(--lumo-border-radius-m);
}

/*
 * The canvas SVG is focusable and draws the native browser focus outline.
 * The modeler renders its own focus-ring, so the native should be hidden.
 */
jmix-bpmn-modeler .djs-container svg:focus {
    outline: none;
}

.bpm-modeler-properties-panel {
    --lumo-font-size: 1rem;
    --lumo-font-size-xxxl: 1.375rem;
    --lumo-font-size-xxl: 1.125rem;
    --lumo-font-size-xl: 1rem;
    --lumo-font-size-l: 0.875rem;
    --lumo-font-size-m: 0.75rem;
    --lumo-font-size-s: 0.6875rem;
    --lumo-font-size-xs: 0.625rem;
    --lumo-font-size-xxs: 0.625rem;
    --lumo-line-height-m: 1.4;
    --lumo-line-height-s: 1.2;
    --lumo-line-height-xs: 1.1;
    --lumo-border-radius: 0.125em;
    --lumo-size-xl: 2.5rem;
    --lumo-size-l: 2rem;
    --lumo-size-m: 1.75rem;
    --lumo-size-s: 1.5rem;
    --lumo-size-xs: 1.25rem;
    --lumo-space-xl: 1.75rem;
    --lumo-space-l: 1.125rem;
    --lumo-space-m: 0.5rem;
    --lumo-space-s: 0.25rem;
    --lumo-space-xs: 0.125rem;
}

/* jmix-lumo/src/addons/bpm/bpmn-viewer-fragment.css */
.bpmn-viewer-fragment {
    padding: var(--lumo-space-s);

    border: 1px solid var(--lumo-contrast-20pct);
}

.bpmn-viewer-fragment .fit-schema-button vaadin-icon {
    transform: rotate(45deg);
}

/*
 * The bpmn-js viewer canvas SVG is focusable and draws the native browser focus
 * outline; the viewer has no custom focus-ring, so the native one is hidden.
 */
jmix-bpmn-viewer .djs-container svg:focus {
    outline: none;
}

/* jmix-lumo/src/addons/bpm/entity-data-task-properties-fragment.css */
.entity-data-task-properties-fragment :is(.entity-attributes, .jpql-parameters) {
    margin-top: var(--lumo-space-m);
}

/* jmix-lumo/src/addons/bpm/form-outcome-detail-view.css */
.form-outcome-detail-view .icon-renderer-icon {
    padding: var(--lumo-space-xs);
}

/* jmix-lumo/src/addons/bpm/misc.css */
vaadin-select.bpm-compact-overlay::part(overlay),
vaadin-combo-box.bpm-compact-overlay::part(overlay) {
    --lumo-font-size: 1rem;
    --lumo-font-size-xxxl: 1.375rem;
    --lumo-font-size-xxl: 1.125rem;
    --lumo-font-size-xl: 1rem;
    --lumo-font-size-l: 0.875rem;
    --lumo-font-size-m: 0.75rem;
    --lumo-font-size-s: 0.6875rem;
    --lumo-font-size-xs: 0.625rem;
    --lumo-font-size-xxs: 0.625rem;
    --lumo-line-height-m: 1.4;
    --lumo-line-height-s: 1.2;
    --lumo-line-height-xs: 1.1;
    --lumo-border-radius: 0.125em;
    --lumo-size-xl: 2.5rem;
    --lumo-size-l: 2rem;
    --lumo-size-m: 1.75rem;
    --lumo-size-s: 1.5rem;
    --lumo-size-xs: 1.25rem;
    --lumo-space-xl: 1.75rem;
    --lumo-space-l: 1.125rem;
    --lumo-space-m: 0.5rem;
    --lumo-space-s: 0.25rem;
    --lumo-space-xs: 0.125rem;
}

.bpm-bean-method-parameters-box {
    margin-top: var(--lumo-space-m);
    gap: var(--lumo-space-xs);
}

.bpm-bean-method-parameters-box .parameter-field {
    flex: 1 1 0;
}

.bpm-refresh-clockwise {
    animation: bpm-refresh-clockwise-animation 1s linear infinite;
    color: var(--lumo-primary-text-color);
}

@keyframes bpm-refresh-clockwise-animation {
    0% { transform: rotate(0deg) scale(-1, 1); }
    100% { transform: rotate(360deg) scale(-1, 1); }
}

/* jmix-lumo/src/addons/bpm/notification-edit.css */
.notification-edit .body-header {
    gap: var(--lumo-space-xs);
}

.notification-edit .form-scroller,
.notification-edit .actions-panel {
    padding: 0 var(--lumo-space-xs);
}

/* jmix-lumo/src/addons/bpm/process-draft-list-view.css */
.process-draft-list-view,
.process-draft-lookup-view {
    vaadin-combo-box.hidden-toggle-button::part(toggle-button) {
        display: none;
    }

    .content-storages-data-grid {
        margin-inline-end: var(--lumo-space-s);
    }

    .bpmn-viewer-fragment {
        margin-inline-start: var(--lumo-space-s);
    }
}

/* jmix-lumo/src/addons/bpm/process-instance-detail-view.css */
.process-instance-detail-view .tree-toggle-container {
    display:flex;
    align-items:center;
}

html {
    --jmix-bpm-running-activity-color: rgba(194, 213, 237, 0.9);
    --jmix-bpm-history-activity-color: rgba(162, 224, 172, 0.45);
}

/* jmix-lumo/src/addons/bpm/send-email-task-properties-fragment.css */
.send-email-task-properties-fragment .email-attachments {
    margin-top: var(--lumo-space-m);
}

/* jmix-lumo/src/addons/bpm/service-task-properties-fragment.css */
.service-task-properties-fragment .fields-box {
    margin-top: var(--lumo-space-m);
}

/* jmix-lumo/src/addons/dynmodel/index.css */
/* jmix-lumo/src/addons/dynmodel/dynmod-settings-view.css */
.dynmod-settings-view .editor-mode-renderer {
    display: flex;
    align-items: center;
    gap: var(--lumo-space-xs);
    justify-content: center;
}

.dynmod-settings-view .dynmod-attribute-features {
    display: flex;
    flex-wrap: nowrap;
    gap: var(--lumo-space-xs);
    align-items: center;
    overflow: hidden;
}

/* Badges keep their own width and stay on one line, so a row never grows past the standard height. */
.dynmod-settings-view .dynmod-attribute-features > * {
    flex: 0 0 auto;
    white-space: nowrap;
}

.dynmod-settings-view {
    container-type: inline-size;
    container-name: dynmod-settings-view;
}

.dynmod-settings-view .header-box {
    align-items: end;
    flex-wrap: wrap-reverse;
    gap: var(--vaadin-gap-s);
    width: 100%;
}

/* The buttons stay next to the fields before them, and the editor mode switch goes to the end. */
.dynmod-settings-view .header-box .tab-list {
    margin-inline-start: auto;
}

.dynmod-settings-view .entities-layout {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: var(--vaadin-gap-s);
}

@container dynmod-settings-view (max-width: 1280px) {
    .dynmod-settings-view .entities-layout {
        grid-template-columns: 1fr 1fr;
    }
}

@container dynmod-settings-view (max-width: 1024px) {
    .dynmod-settings-view .entities-layout {
        grid-template-columns: 1fr;
    }
}

@container dynmod-settings-view (max-width: 640px) {
    .dynmod-settings-view .header-box {
        flex-direction: column-reverse;
        align-items: start;
    }

    .dynmod-settings-view .header-box .tab-list {
        align-self: stretch;
        margin-inline-start: 0;
    }
}

.dynamic-view-handler-model-detail-view .component-id-renderer {
    gap: var(--lumo-space-xs);
}

.dynamic-view-handler-model-detail-view .component-id-renderer-tag {
    color: var(--lumo-secondary-text-color);
}

/* jmix-lumo/src/addons/dynmodel/dynmod-settings-history-view.css */
.dynmod-settings-history-view {
    container-type: inline-size;
    container-name: dynmod-settings-history-view;
}

.dynmod-settings-history-view .history-layout {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: var(--vaadin-gap-s);
}

@container dynmod-settings-history-view (max-width: 1280px) {
    .dynmod-settings-history-view .history-layout {
        grid-template-columns: 1fr 1fr;
    }
}

/* On a narrow screen the code editor goes below the data grid. */
@container dynmod-settings-history-view (max-width: 1024px) {
    .dynmod-settings-history-view .history-layout {
        grid-template-columns: 1fr;
    }
}

/* jmix-lumo/src/addons/dynmodel/dynmod-ai-builder.css */
.dynmod-ai-builder {
    min-width: 0;
    min-height: 0;
    /* The agent's own finding palette: next to each other the theme red, orange and yellow blend or glare.
       The hues are far apart and muted; the text stays neutral, and the stripe, the icon and a faint tint
       show the severity. */
    --dmagent-finding-error: light-dark(oklch(0.56 0.15 25), oklch(0.72 0.13 25));
    --dmagent-finding-warning: light-dark(oklch(0.74 0.13 75), oklch(0.8 0.12 80));
}

.dynmod-ai-builder .chat-pane {
    flex: 1 1 auto;
    min-width: 0;
    min-height: 0;
    height: 100%;
    overflow: hidden;
}

.dynmod-ai-builder .chat-pane .jmix-ai-chat {
    min-height: 0;
}

.dynmod-ai-builder .chat-pane .jmix-ai-chat[empty] {
    justify-content: flex-end;
}

.dynmod-ai-builder .chat-pane .jmix-ai-chat[empty] .jmix-ai-chat-empty-header {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
    overflow-y: auto;
    justify-content: safe center;
}

.dynmod-ai-builder .chat-pane jmix-ai-message-input {
    box-sizing: border-box;
    padding: 0 var(--lumo-space-m) var(--lumo-space-m);
}

/* Progress follows the question it answers: AI Chat keeps an empty reply and its own, unused status list
   above the thinking indicator while the reply is generated. */
.dynmod-ai-builder .chat-pane jmix-ai-assistant-message[message-state='generating']:not([has-message]) {
    display: none;
}

.dynmod-ai-builder .chat-pane jmix-ai-message-list::part(thinking-status-list) {
    display: none;
}

.dynmod-ai-builder .chat-empty {
    flex-shrink: 0;
    gap: var(--lumo-space-s);
    padding: 0 var(--lumo-space-m) var(--lumo-space-m);
    text-align: center;
}

.dynmod-ai-builder .chat-empty-icon {
    color: var(--lumo-primary-color-50pct);
    width: var(--lumo-icon-size-l);
    height: var(--lumo-icon-size-l);
}

.dynmod-ai-builder .chat-empty-text {
    color: var(--lumo-secondary-text-color);
    font-size: var(--lumo-font-size-s);
    line-height: var(--lumo-line-height-s);
    max-width: 28em;
}

.dynmod-ai-builder .chat-empty-examples {
    justify-content: center;
    gap: var(--lumo-space-xs);
}

.dynmod-ai-builder vaadin-button.example-chip {
    --vaadin-button-tertiary-background: var(--lumo-primary-color-10pct);
    border-radius: var(--lumo-size-m);
    padding: 0 var(--lumo-space-m);
}

.dynmod-ai-builder .draft-panel {
    flex: 0 0 30em;
    width: 30em;
    height: 100%;
    min-width: 0;
    min-height: 0;
    box-sizing: border-box;
}

.dynmod-ai-builder .draft-header {
    flex-shrink: 0;
    gap: var(--lumo-space-s);
    padding: var(--lumo-space-s) var(--lumo-space-m);
    box-sizing: border-box;
    flex-wrap: nowrap;
    align-items: center;
}

.dynmod-ai-builder .draft-title {
    margin: 0;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.dynmod-ai-builder .draft-body {
    min-height: 0;
    padding: var(--lumo-space-s) var(--lumo-space-m);
    overflow-y: auto;
    box-sizing: border-box;
}

.dynmod-ai-builder .card {
    background: var(--lumo-base-color);
    border: 1px solid var(--lumo-contrast-10pct);
    border-radius: var(--lumo-border-radius-m);
    padding: var(--lumo-space-s) var(--lumo-space-m);
    box-sizing: border-box;
}

.dynmod-ai-builder .card-caption {
    margin: 0 0 var(--lumo-space-xs);
    color: var(--lumo-secondary-text-color);
    font-size: var(--lumo-font-size-xs);
    font-weight: 600;
}

.dynmod-ai-builder .plan-item {
    display: block;
    position: relative;
    padding: 0.22em 0 0.22em 1.1em;
    color: var(--lumo-body-text-color);
    font-size: var(--lumo-font-size-s);
    line-height: var(--lumo-line-height-s);
    overflow-wrap: anywhere;
}

.dynmod-ai-builder .plan-item::before {
    content: '';
    position: absolute;
    inset-inline-start: 0.05em;
    top: 0.72em;
    width: 0.32em;
    height: 0.32em;
    border-radius: 50%;
    background: var(--lumo-primary-color);
}

.dynmod-ai-builder .plan-minor {
    color: var(--lumo-secondary-text-color);
    font-size: var(--lumo-font-size-xs);
}

.dynmod-ai-builder .plan-minor::before {
    background: var(--lumo-contrast-30pct);
}

.dynmod-ai-builder .finding {
    display: block;
    padding: 0.2em 0;
    font-size: var(--lumo-font-size-s);
    line-height: var(--lumo-line-height-s);
    overflow-wrap: anywhere;
}

.dynmod-ai-builder .finding-blocking {
    --dmagent-finding-accent: var(--dmagent-finding-error);
}

.dynmod-ai-builder .finding-advisory {
    --dmagent-finding-accent: var(--dmagent-finding-warning);
}

.dynmod-ai-builder .finding-ok {
    color: var(--lumo-success-text-color);
}

.dynmod-ai-builder .fix-button {
    flex-shrink: 0;
    font-size: var(--lumo-font-size-xs);
}

.dynmod-ai-builder .note-title {
    display: block;
    margin-bottom: 0.25em;
    font-weight: 600;
}

.dynmod-ai-builder .note-text {
    display: block;
    color: var(--lumo-body-text-color);
    font-size: var(--lumo-font-size-s);
    line-height: var(--lumo-line-height-s);
}

.dynmod-ai-builder vaadin-details.card-details {
    background: var(--lumo-base-color);
    border: 1px solid var(--lumo-contrast-10pct);
    border-radius: var(--lumo-border-radius-m);
    padding: 0 var(--lumo-space-s);
    box-sizing: border-box;
}

.dynmod-ai-builder .step-row {
    display: block;
    padding: 0.2em 0;
    font-size: var(--lumo-font-size-s);
    overflow-wrap: anywhere;
}

.dynmod-ai-builder .actions {
    flex-shrink: 0;
    padding: var(--lumo-space-s) var(--lumo-space-m) var(--lumo-space-m);
    box-sizing: border-box;
}

@container dynmod-settings-view (max-width: 60rem) {
    .dynmod-ai-builder {
        flex-direction: column;
    }

    .dynmod-ai-builder .chat-pane {
        flex: 1 1 55%;
        width: 100%;
        height: auto;
        border-inline-end: none;
    }

    .dynmod-ai-builder .draft-panel {
        border-inline-start: none;
        border-block-start: 1px solid var(--lumo-contrast-10pct);
        flex: 1 1 45%;
        width: 100%;
        height: auto;
    }
}
/* Builder-local presentation; shared AiChat styles are intentionally unchanged. */
.dynmod-ai-builder .dmagent-activity-summary { --dmagent-activity-link-color: var(--lumo-primary-text-color); }
.dynmod-ai-builder .conversation-header { flex: 0 0 auto; padding-inline: 1rem; }
.dynmod-ai-builder .draft-panel { background: var(--lumo-base-color); }
.dynmod-ai-builder .draft-header > :not(.draft-title) { flex-shrink: 0; }
.dynmod-ai-builder .draft-title { flex: 1 1 0; white-space: normal; overflow-wrap: anywhere; font-size: 1rem; }
.dynmod-ai-builder .step-row { padding-block: .5rem; line-height: 1.5; border-bottom: 1px solid var(--lumo-contrast-10pct); }
.dynmod-ai-builder .step-properties { color: var(--lumo-secondary-text-color); font-size: .875em; }
.dynmod-ai-builder .card-details::part(content) { padding-inline: 0; }
.dynmod-ai-builder .finding-row { border-inline-start: 3px solid var(--dmagent-finding-accent); border-start-end-radius: var(--lumo-border-radius-m); border-end-end-radius: var(--lumo-border-radius-m); background: color-mix(in oklab, var(--dmagent-finding-accent) 8%, transparent); color: var(--lumo-body-text-color); padding: .5rem .65rem; margin-block: .35rem; align-items: flex-start; gap: var(--lumo-space-s); }
.dynmod-ai-builder .finding-row > vaadin-icon { flex: 0 0 1rem; width: 1rem; height: 1rem; margin-block-start: .15rem; color: var(--dmagent-finding-accent); }
.dynmod-ai-builder .finding-level { display: block; font-weight: 600; margin-bottom: .2rem; }
.dynmod-ai-builder .run-activity { font-size: .8125rem; width: 100%; max-width: 40rem; min-width: 0; }
.dynmod-ai-builder .activity-row { display: flex; align-items: baseline; gap: .4rem; padding-block: .2rem; min-width: 0; }
.dynmod-ai-builder .activity-row > vaadin-icon { width: .85rem; height: .85rem; flex: 0 0 auto; }
.dynmod-ai-builder .activity-row > span:first-of-type { overflow-wrap: anywhere; }
.dynmod-ai-builder .activity-duration { margin-inline-start: auto; white-space: nowrap; color: var(--lumo-secondary-text-color); font-variant-numeric: tabular-nums; }
.dynmod-ai-builder .activity-started > vaadin-icon { animation: dmagent-activity-spin 1.5s linear infinite; }
.dynmod-ai-builder .activity-completed > vaadin-icon { color: var(--lumo-success-text-color); }
.dynmod-ai-builder .activity-failed > vaadin-icon { color: var(--lumo-error-text-color); }
.dynmod-ai-builder .activity-waiting > vaadin-icon { color: var(--lumo-warning-text-color); }
.dynmod-ai-builder .activity-card { border: none; border-radius: 0; padding: 0; background: transparent; }
.dynmod-ai-builder .activity-open { display: block; width: 100%; height: auto; margin: 0; padding: 0; border: 0; border-radius: 0; box-shadow: none; background: transparent; text-align: start; white-space: normal; color: inherit; font: inherit; }
.dynmod-ai-builder .activity-open::part(label) { display: block; width: 100%; white-space: normal; }
.dynmod-ai-builder .activity-open .activity-row { width: 100%; box-sizing: border-box; }
.dynmod-ai-builder .activity-open:hover .activity-row > span:first-of-type { color: var(--lumo-primary-text-color); text-decoration: underline; }
.dynmod-ai-builder .activity-open:focus-visible { outline: 2px solid var(--lumo-primary-color); outline-offset: 2px; }
@keyframes dmagent-activity-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .dynmod-ai-builder .activity-started > vaadin-icon { animation: none; } }
/* While the assistant works, the AI mode shows a pulsing dot: Visual and Code stay viewable but read-only. */
.dynmod-settings-view .editor-mode-renderer.ai-busy::after { content: ""; flex: none; width: .45em; height: .45em; border-radius: 50%; background: var(--lumo-primary-color); animation: dmagent-mode-busy 1.6s ease-in-out infinite; }
@keyframes dmagent-mode-busy { 50% { opacity: .35; transform: scale(.75); } }
@media (prefers-reduced-motion: reduce) { .dynmod-settings-view .editor-mode-renderer.ai-busy::after { animation: none; } }
/* The agent puts the Visual / Code / AI switch first: it stays at the start, also when the header wraps. */
.dynmod-settings-view .header-box.dmagent-header-box { flex-wrap: wrap; }
.dynmod-settings-view .header-box.dmagent-header-box .tab-list { margin-inline-start: 0; margin-inline-end: auto; }
@container dynmod-settings-view (max-width: 640px) {
    .dynmod-settings-view .header-box.dmagent-header-box { flex-direction: column; }
    .dynmod-settings-view .header-box.dmagent-header-box .tab-list { margin-inline-end: 0; }
}

/* jmix-lumo/src/addons/dynmodel/dynmod-ai-model-panel.css */
/* Shared by the live Builder panel and the saved attachments in the chat, in both themes. */
.dynmod-ai-builder .draft-panel .draft-title {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    min-width: 0;
    line-height: 1.4;
    max-height: 2.8em;
}

.dynmod-ai-builder .draft-panel .step-row {
    width: 100%;
    box-sizing: border-box;
}

.dynmod-ai-builder .plan-target {
    font-weight: 600;
    white-space: normal;
    overflow-wrap: anywhere;
}

.dynmod-ai-builder .draft-panel .step-properties {
    display: block;
    margin-top: .2rem;
    font-family: var(--lumo-font-family-monospace, monospace);
    font-size: .9em;
    font-weight: 400;
    white-space: normal;
    overflow-wrap: anywhere;
    color: var(--vaadin-text-color-secondary, var(--lumo-secondary-text-color));
}

.dynmod-ai-builder .preview-section {
    display: block;
    font-size: .875rem;
    font-weight: 400;
    color: var(--vaadin-text-color-secondary, var(--lumo-secondary-text-color));
}

.dynmod-ai-builder .plan-entity {
    width: 100%;
    box-sizing: border-box;
}

.dynmod-ai-builder .plan-entity:first-child {
    padding-top: .75rem;
}

.dynmod-ai-builder .plan-entity + .plan-entity {
    margin-top: .75rem;
    padding-top: 2rem;
    border-top: 2px solid var(--vaadin-border-color, var(--lumo-contrast-30pct));
}

.dynmod-ai-builder .plan-entity-title {
    display: block;
    margin-bottom: .75rem;
    padding: .5rem .75rem;
    border-inline-start: 3px solid var(--vaadin-text-color-secondary, var(--lumo-secondary-text-color));
    background: var(--vaadin-background-container, var(--lumo-contrast-5pct));
    font-size: 1.125rem;
    font-weight: 700;
    line-height: 1.4;
    overflow-wrap: anywhere;
}

.dynmod-ai-builder .plan-entity-content {
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
    padding-inline-start: .75rem;
}

.dynmod-ai-builder .finding-group .finding-row + .finding-row {
    margin-top: .75rem;
}

.dynmod-ai-builder .finding-group > .plan-entity-content {
    padding-inline-start: 0;
}

.dynmod-ai-builder .finding-group + .finding-group {
    margin-top: 1rem;
    padding-top: 1rem;
}

.dynmod-ai-builder .draft-panel .finding-row {
    box-sizing: border-box;
    padding: .75rem;
    margin: 0;
    gap: .5rem;
    align-items: flex-start;
}

.dynmod-ai-builder .finding-row > .finding {
    min-width: 0;
    padding: 0;
    line-height: 1.5;
}

.dynmod-ai-builder .finding-body {
    margin: .5rem 0 0;
    padding: 0;
    color: var(--vaadin-text-color, var(--lumo-body-text-color));
}

.dynmod-ai-builder .finding-intro {
    display: block;
    margin-top: .5rem;
    color: var(--vaadin-text-color, var(--lumo-body-text-color));
}

.dynmod-ai-builder ul.finding-body {
    padding-inline-start: 1rem;
}

.dynmod-ai-builder .finding-body > li + li {
    margin-top: .5rem;
}

.dynmod-ai-builder .finding-body .fix-button {
    display: block;
    margin-top: .5rem;
}

.dynmod-ai-builder .draft-panel vaadin-details.card-details:not(.activity-card)::part(content) {
    padding-bottom: .75rem;
}

.dynmod-ai-builder .activity-list {
    padding-block: .5rem .75rem;
}

.dynmod-ai-builder .activity-list .activity-row {
    display: grid;
    grid-template-columns: .85rem minmax(0, 1fr) auto;
    align-items: start;
    width: 100%;
    box-sizing: border-box;
    padding-block: .2rem;
}

.dynmod-ai-builder .activity-list .activity-row > vaadin-icon {
    margin-top: .2rem;
}

.dynmod-ai-builder .activity-list .activity-duration {
    margin-inline-start: 0;
    justify-self: end;
}

.dynmod-ai-builder vaadin-details.activity-card {
    border: 0;
    border-radius: 0;
    padding: 0;
    background: transparent;
}

.dynmod-ai-builder vaadin-details.activity-card > vaadin-details-summary {
    display: none;
}

.dynmod-ai-builder vaadin-details.activity-card::part(content) {
    padding: 0;
}

.dynmod-ai-builder .plan-section + .plan-section {
    margin-top: .85rem;
    padding-top: .85rem;
    border-top: 1px solid var(--vaadin-border-color-secondary, var(--lumo-contrast-10pct));
}

.dynmod-ai-builder .plan-section-title {
    color: var(--vaadin-text-color-secondary, var(--lumo-secondary-text-color));
    font-size: .875rem;
}

.dynmod-ai-builder .plan-step-list {
    margin: .5rem 0 0;
    padding-left: 1.1rem;
}

.dynmod-ai-builder .plan-step-list > li + li {
    margin-top: .5rem;
}

.dynmod-ai-builder .draft-panel .plan-step-list .step-row {
    display: block;
    padding: 0;
    margin: 0;
    border: 0;
    font-size: .875rem;
    line-height: 1.5;
}

.dynmod-ai-builder .applied-view-links {
    margin: .5rem 0 0;
    padding-left: 1.25rem;
}

.dynmod-ai-builder .applied-view-links > li + li {
    margin-top: .4rem;
}

.dynmod-ai-builder vaadin-button.applied-view-link {
    background: transparent;
    border: 0;
    border-radius: 0;
    padding: 0;
    margin: 0;
    min-width: 0;
    min-height: 0;
    height: auto;
    color: var(--aura-accent-text-color, var(--lumo-primary-text-color));
    font-weight: 400;
    text-decoration: underline;
    cursor: pointer;
}

/* jmix-lumo/src/addons/dynmodel/misc.css */
vaadin-button.picker-button {
    font-size: inherit;
    line-height: inherit;

    padding: 0px;
    margin: 0px;

    --lumo-button-size: var(--lumo-size-s);
    min-width: var(--lumo-button-size);
    height: var(--lumo-button-size);

    color: var(--_lumo-button-text-color);
}

vaadin-button.picker-button::part(label) {
    line-height: inherit;
    overflow: visible;
    padding: 0px;
}

vaadin-radio-group.tab-list::part(group-field) {
    flex-wrap: nowrap;
    gap: var(--lumo-space-xs);

    box-sizing: border-box;

    padding: var(--lumo-space-xs);

    background: var(--lumo-contrast-10pct);
    border-radius: calc(var(--lumo-border-radius-l) + var(--lumo-space-xs));
}

vaadin-radio-group.tab-list vaadin-radio-button {
    color: var(--lumo-secondary-text-color);
    padding: var(--lumo-space-wide-s);
    border-radius: var(--lumo-border-radius-l);

    flex-grow: 1;

    transition: color .12s, background-color .12s;

    cursor: var(--_cursor);
}

vaadin-radio-group.tab-list vaadin-radio-button[checked] {
    color: var(--lumo-primary-text-color);
    background: var(--lumo-base-color);

    box-shadow: var(--lumo-box-shadow-xs);
}

vaadin-radio-group.tab-list vaadin-radio-button > label {
    color: inherit;
    padding: 0;
    justify-self: stretch;
}

vaadin-radio-group.tab-list vaadin-radio-button::part(radio) {
    display: none;
}

vaadin-radio-group.tab-list vaadin-radio-button[focus-ring] {
    box-shadow: 0 0 0 1px var(--lumo-base-color),
    0 0 0 calc(var(--_focus-ring-width) + 1px) var(--_focus-ring-color);
}

@media (any-hover: hover) {
    vaadin-radio-group.tab-list vaadin-radio-button:not([checked], [disabled]):hover {
        color: var(--lumo-body-text-color);
    }
}

.dynmod-icon-renderer {
    display: flex;
    align-items: center;
    gap: var(--vaadin-gap-s);
}

.dynmod-icon-renderer-icon {
    margin-inline-end: var(--vaadin-padding-xs);
}

/* jmix-lumo/src/addons/groupgrid/index.css */
/* jmix-lumo/src/addons/groupgrid/jmix-columns-grouper.css */
.jmix-columns-grouper {
    --_drop-area-color: var(--jmix-columns-grouper-drop-area-color, var(--lumo-primary-color-50pct));
    --_drop-area-border-width: var(--jmix-columns-grouper-drop-area-border-width, 2px);
    --_drop-area-border-radius: var(--jmix-columns-grouper-drop-area-border-radius, var(--lumo-border-radius-m));

    --_grouper-min-width: var(--jmix-columns-grouper-min-width, 8em);

    min-width: var(--_grouper-min-width);
    gap: var(--lumo-space-xs);
}

.jmix-columns-grouper-title {
    padding: var(--lumo-space-xs) var(--lumo-space-s);
    font-weight: 500;
}

.jmix-columns-grouper-separator {
    margin: var(--lumo-space-xs) calc(var(--lumo-border-radius-m) / 2);
    background-color: var(--lumo-contrast-30pct);
}

.jmix-columns-grouper-drop-here {
    font-size: var(--lumo-font-size-s);
    color: var(--lumo-contrast-70pct);
    padding: var(--lumo-space-s);
    align-self: center;
}

.jmix-columns-grouper-clear-all {
    font-size: var(--lumo-font-size-s);
    height: var(--lumo-size-xs);
}

.jmix-columns-grouper-grouping-box jmix-columns-grouper-item,
.jmix-columns-grouper-available-box jmix-columns-grouper-item {
    border-top: var(--_drop-area-border-width) solid transparent;
    border-bottom: 0;
}

.jmix-columns-grouper-grouping-box jmix-columns-grouper-item:last-child,
.jmix-columns-grouper-available-box jmix-columns-grouper-item:last-child {
    border-bottom: var(--_drop-area-border-width) solid transparent;
}

.jmix-columns-grouper-grouping-box {
    border: var(--_drop-area-border-width) solid transparent;
    border-radius: var(--_drop-area-border-radius);

    &[dragover='empty'] {
        border: var(--_drop-area-border-width) solid var(--_drop-area-color);
    }

    jmix-columns-grouper-item {
        &[dragover='before'] {
            border-top: var(--_drop-area-border-width) solid var(--_drop-area-color);
            border-top-right-radius: 0;
            border-top-left-radius: 0;
        }

        &[dragover='after'] {
            border-bottom: var(--_drop-area-border-width) solid var(--_drop-area-color);
            border-bottom-right-radius: 0;
            border-bottom-left-radius: 0;
        }
    }
}

.jmix-columns-grouper-available-box {
    border: var(--_drop-area-border-width) solid transparent;
}

/* jmix-lumo/src/addons/groupgrid/jmix-columns-grouper-item.css */
:root::before,
:host::before {
  --_lumo-jmix-columns-grouper-item-inject: 1;
  --_lumo-jmix-columns-grouper-item-inject-modules:
          lumo_components_jmix-columns-grouper-item;
}

@media lumo_components_jmix-columns-grouper-item {

  /* Ex Base styles */

  :host {
    box-sizing: border-box;
    border-radius: var(--lumo-border-radius-m);
    padding: 0.25rem 0.5rem;
  }

  [part='item-container'] {
    display: flex;
    justify-content: space-between;
  }

  /* Lumo specific styles */

  :host {
    border-radius: var(--lumo-border-radius-m);
    padding: var(--lumo-space-xs) var(--lumo-space-s);
  }

  :host(:hover) {
    --_highlight-color: var(--lumo-primary-color-10pct);
  }

  :host vaadin-button {
    color: var(--lumo-primary-text-color);
  }
}

/* jmix-lumo/src/addons/groupgrid/jmix-group-toggle.css */
vaadin-grid-tree-toggle.jmix-group-toggle {
  &::part(toggle) {
    align-items: center;
    color: var(--lumo-contrast-70pct);
    display: flex;
    justify-content: center;
    font-size: var(--lumo-font-size-m);
  }

  &::part(toggle)::before {
    content: "\e800";
    font-family: Vaadin-Icons;
  }

  &[expanded]::part(toggle)::before {
    content: "\e7f5";
    font-family: Vaadin-Icons;
    transform: unset;
  }

  &:hover::part(toggle) {
    color: var(--lumo-contrast-90pct);
  }
}

/* jmix-lumo/src/addons/groupgrid/jmix-header-grouper.css */
.jmix-grid-header-grouper {
    display: inline-flex;
    gap: var(--lumo-space-xs);

    padding-inline-end: 2px;
    padding-block: 2px;
}

vaadin-grid [jmix-role='grouper-button']:hover {
    color: var(--lumo-contrast);
}

vaadin-grid [jmix-role='grouper-button'] {
    color: var(--lumo-tertiary-text-color);
}

vaadin-grid-sorter[direction] [jmix-role='grouper-button'] {
    color: var(--vaadin-selection-color-text, var(--lumo-primary-text-color));
}

.jmix-grouper-popover::part(content) {
     padding: var(--lumo-space-xs) var(--lumo-space-xs);
}

.jmix-group-icon {
    padding: 0.1em;
    box-sizing: border-box;
}

/* jmix-lumo/src/addons/kanban/index.css */
/* jmix-lumo/src/addons/kanban/jmix-kanban.css */
:root {
    --smart-primary: var(--lumo-primary-color);
    --smart-ui-state-selected: var(--lumo-contrast-5pct);
    --smart-ui-state-border-selected: var(--lumo-primary-color-10pct);
    --smart-surface: var(--lumo-contrast-5pct);
    --smart-background: var(--lumo-base-color);
    --smart-border-radius: var(--lumo-border-radius-s);
    --smart-background-color: var(--lumo-body-text-color);
    --smart-surface-color: var(--lumo-body-text-color);
    --smart-ui-state-hover: var(--lumo-primary-color-10pct);
}

:root[theme="dark"] {
    --smart-ui-state-color-hover: var(--lumo-primary-contrast-color);
}

.smart-kanban .swimlane {
    border-color: var(--lumo-contrast-20pct);
}

.smart-kanban-list.dialog:focus {
    outline: unset;
}

.smart-kanban.smart-kanban-column-color .smart-kanban-column:not(.smart-kanban-add-new-column),
.smart-kanban .smart-kanban-column > .smart-kanban-column-header, .smart-kanban-task {
    border-radius: var(--lumo-border-radius-m);
}

.smart-kanban.smart-kanban-column-color .smart-kanban-column:not(.smart-kanban-add-new-column) {
    padding: var(--lumo-space-s);
}

.smart-kanban-list.dialog {
    border-color: var(--lumo-contrast-20pct);
    box-shadow: 0 0 0 1px var(--lumo-shade-5pct), var(--lumo-box-shadow-m);
}

.smart-kanban-list.dialog .item.selected {
    color: var(--lumo-body-text-color);
}

.smart-kanban-task-progress-container {
    height: 12px;
}

.smart-kanban-task-progress {
    height: 4px;
}

.smart-kanban .smart-kanban-column > .smart-kanban-column-header {
    --smart-surface-color: var(--lumo-header-text-color);
    border-color: var(--lumo-contrast-20pct);
}

.smart-kanban-task-due.overdue {
    color: var(--lumo-error-color);
}

.smart-kanban-task-due.overdue:after {
    margin-left: var(--lumo-space-xs);
}

.smart-kanban-task {
    grid-row-gap: var(--lumo-space-s);
    padding: var(--lumo-space-s);
    border-top-color: var(--lumo-contrast-20pct);
    border-right-color: var(--lumo-contrast-20pct);
    border-bottom-color: var(--lumo-contrast-20pct);
}

.smart-kanban .smart-kanban-task[selected] {
    background-color: var(--lumo-primary-color-10pct);
}

.smart-kanban-task-tag {
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    padding: 0.4em calc(0.5em + var(--lumo-border-radius-s) / 4);
    --lumo-border-radius-s: 1em;
    color: var(--lumo-primary-text-color);
    background-color: var(--lumo-primary-color-10pct);
    border-radius: var(--lumo-border-radius-s);
    font-family: var(--lumo-font-family);
    font-size: var(--lumo-font-size-xxs);
    font-weight: 500;
    text-transform: initial;
    letter-spacing: initial;
    min-width: calc(var(--lumo-line-height-xs) * 1em + 0.45em);
    flex-shrink: 0;
    margin-right: unset;
}

[task-tags] .smart-kanban-task-tags {
    gap: var(--lumo-space-xs);
    display: flex;
    flex-direction: row;
    overflow: hidden;
    flex-wrap: wrap;
}

[task-priority] .smart-kanban-task-text, .smart-kanban-task-text {
    gap: var(--lumo-space-s);
    padding: unset;
}

[task-priority][editable][kanban-priority-read-only] .smart-kanban-task-text:hover .priority {
    pointer-events: none;
    background-image: unset;
}

[task-priority][editable][kanban-priority-read-only] .smart-kanban-task-text:hover .priority.low,
[task-priority] .smart-kanban-task-text .priority.low, .smart-kanban-task-text .priority.low {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23006af5'%3E%3Cpath d='M2.73804 7.00207C1.96611 5.66874 2.92823 4 4.46889 4H19.5311C21.0718 4 22.0339 5.66874 21.262 7.00207L13.7309 20.0103C12.9605 21.3409 11.0395 21.3409 10.2691 20.0103L2.73804 7.00207Z'/%3E%3C/svg%3E");
}

[task-priority][editable][kanban-priority-read-only] .smart-kanban-task-text:hover .priority.average,
[task-priority] .smart-kanban-task-text .priority.average, .smart-kanban-task-text .priority.average {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23005fdb'%3E%3Cpath d='M12 5.98999L19.53 19H4.47L12 5.98999ZM2.74 18C1.97 19.33 2.93 21 4.47 21H19.53C21.07 21 22.03 19.33 21.26 18L13.73 4.98999C12.96 3.65999 11.04 3.65999 10.27 4.98999L2.74 18Z'/%3E%3C/svg%3E");
}

[task-priority][editable][kanban-priority-read-only] .smart-kanban-task-text:hover .priority.high,
[task-priority] .smart-kanban-task-text .priority.high, .smart-kanban-task-text .priority.high {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23e71d13'%3E%3Cpath d='M2.73804 17.9979C1.96611 19.3313 2.92823 21 4.46889 21H19.5311C21.0718 21 22.0339 19.3313 21.262 17.9979L13.7309 4.98965C12.9605 3.65908 11.0395 3.65908 10.2691 4.98965L2.73804 17.9979Z'/%3E%3C/svg%3E");
}

[task-priority][editable][kanban-priority-read-only] .smart-kanban-task-text:hover .priority.critical,
[task-priority] .smart-kanban-task-text .priority.critical, .smart-kanban-task-text .priority.critical {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23e21c12'%3E%3Cpath d='M2.73804 17.9979C1.96611 19.3313 2.92823 21 4.46889 21H19.5311C21.0718 21 22.0339 19.3313 21.262 17.9979L13.7309 4.98965C12.9605 3.65908 11.0395 3.65908 10.2691 4.98965L2.73804 17.9979ZM13.5 17.5C13.5 18.3284 12.8284 19 12 19V19C11.1716 19 10.5 18.3284 10.5 17.5V17.5C10.5 16.6716 11.1716 16 12 16V16C12.8284 16 13.5 16.6716 13.5 17.5V17.5ZM13.5 13.5C13.5 14.3284 12.8284 15 12 15V15C11.1716 15 10.5 14.3284 10.5 13.5V9.5C10.5 8.67157 11.1716 8 12 8V8C12.8284 8 13.5 8.67157 13.5 9.5V13.5Z'/%3E%3C/svg%3E");
}

/* jmix-lumo/src/addons/maps/index.css */
/* jmix-lumo/src/addons/maps/jmix-openlayers-map.css */
:root::before,
:host::before {
  --_lumo-jmix-openlayers-map-inject: 1;
  --_lumo-jmix-openlayers-map-inject-modules:
          lumo_components_jmix-openlayers-map;
}

@media lumo_components_jmix-openlayers-map {

  #map {
      height: 100%;
      width: 100%;
      outline: none;
  }

  /* Copied from ol/ol.css */

  :root,
  :host {
      --ol-background-color: white;
      --ol-accent-background-color: #F5F5F5;
      --ol-subtle-background-color: rgba(128, 128, 128, 0.25);
      --ol-partial-background-color: rgba(255, 255, 255, 0.75);
      --ol-foreground-color: #333333;
      --ol-subtle-foreground-color: #666666;
      --ol-brand-color: #00AAFF;
  }

  .ol-box {
      box-sizing: border-box;
      border-radius: 2px;
      border: 1.5px solid var(--ol-background-color);
      background-color: var(--ol-partial-background-color);
  }

  .ol-mouse-position {
      top: 8px;
      right: 8px;
      position: absolute;
  }

  .ol-scale-line {
      background: var(--ol-partial-background-color);
      border-radius: 4px;
      bottom: 8px;
      left: 8px;
      padding: 2px;
      position: absolute;
  }

  .ol-scale-line-inner {
      border: 1px solid var(--ol-subtle-foreground-color);
      border-top: none;
      color: var(--ol-foreground-color);
      font-size: 10px;
      text-align: center;
      margin: 1px;
      will-change: contents, width;
      transition: all 0.25s;
  }

  .ol-scale-bar {
      position: absolute;
      bottom: 8px;
      left: 8px;
  }

  .ol-scale-bar-inner {
      display: flex;
  }

  .ol-scale-step-marker {
      width: 1px;
      height: 15px;
      background-color: var(--ol-foreground-color);
      float: right;
      z-index: 10;
  }

  .ol-scale-step-text {
      position: absolute;
      bottom: -5px;
      font-size: 10px;
      z-index: 11;
      color: var(--ol-foreground-color);
      text-shadow: -1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);
  }

  .ol-scale-text {
      position: absolute;
      font-size: 12px;
      text-align: center;
      bottom: 25px;
      color: var(--ol-foreground-color);
      text-shadow: -1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);
  }

  .ol-scale-singlebar {
      position: relative;
      height: 10px;
      z-index: 9;
      box-sizing: border-box;
      border: 1px solid var(--ol-foreground-color);
  }

  .ol-scale-singlebar-even {
      background-color: var(--ol-subtle-foreground-color);
  }

  .ol-scale-singlebar-odd {
      background-color: var(--ol-background-color);
  }

  .ol-unsupported {
      display: none;
  }

  .ol-viewport,
  .ol-unselectable {
      -webkit-touch-callout: none;
      -webkit-user-select: none;
      -moz-user-select: none;
      user-select: none;
      -webkit-tap-highlight-color: transparent;
  }

  .ol-viewport canvas {
      all: unset;
  }

  .ol-viewport {
      touch-action: none;
  }

  .ol-selectable {
      -webkit-touch-callout: default;
      -webkit-user-select: text;
      -moz-user-select: text;
      user-select: text;
  }

  .ol-grabbing {
      cursor: -webkit-grabbing;
      cursor: -moz-grabbing;
      cursor: grabbing;
  }

  .ol-grab {
      cursor: move;
      cursor: -webkit-grab;
      cursor: -moz-grab;
      cursor: grab;
  }

  .ol-control {
      position: absolute;
      background-color: var(--ol-subtle-background-color);
      border-radius: 4px;
  }

  .ol-zoom {
      top: .5em;
      left: .5em;
  }

  .ol-rotate {
      top: .5em;
      right: .5em;
      transition: opacity .25s linear, visibility 0s linear;
  }

  .ol-rotate.ol-hidden {
      opacity: 0;
      visibility: hidden;
      transition: opacity .25s linear, visibility 0s linear .25s;
  }

  .ol-zoom-extent {
      top: 4.643em;
      left: .5em;
  }

  .ol-full-screen {
      right: .5em;
      top: .5em;
  }

  .ol-control button {
      display: block;
      margin: 1px;
      padding: 0;
      color: var(--ol-subtle-foreground-color);
      font-weight: bold;
      text-decoration: none;
      font-size: inherit;
      text-align: center;
      height: 1.375em;
      width: 1.375em;
      line-height: .4em;
      background-color: var(--ol-background-color);
      border: none;
      border-radius: 2px;
  }

  .ol-control button::-moz-focus-inner {
      border: none;
      padding: 0;
  }

  .ol-zoom-extent button {
      line-height: 1.4em;
  }

  .ol-compass {
      display: block;
      font-weight: normal;
      will-change: transform;
  }

  .ol-touch .ol-control button {
      font-size: 1.5em;
  }

  .ol-touch .ol-zoom-extent {
      top: 5.5em;
  }

  .ol-control button:hover,
  .ol-control button:focus {
      text-decoration: none;
      outline: 1px solid var(--ol-subtle-foreground-color);
      color: var(--ol-foreground-color);
  }

  .ol-zoom .ol-zoom-in {
      border-radius: 2px 2px 0 0;
  }

  .ol-zoom .ol-zoom-out {
      border-radius: 0 0 2px 2px;
  }

  .ol-attribution {
      text-align: right;
      bottom: .5em;
      right: .5em;
      max-width: calc(100% - 1.3em);
      display: flex;
      flex-flow: row-reverse;
      align-items: center;
  }

  .ol-attribution a {
      color: var(--ol-subtle-foreground-color);
      text-decoration: none;
  }

  .ol-attribution ul {
      margin: 0;
      padding: 1px .5em;
      color: var(--ol-foreground-color);
      text-shadow: 0 0 2px var(--ol-background-color);
      font-size: 12px;
  }

  .ol-attribution li {
      display: inline;
      list-style: none;
  }

  .ol-attribution li:not(:last-child):after {
      content: " ";
  }

  .ol-attribution img {
      max-height: 2em;
      max-width: inherit;
      vertical-align: middle;
  }

  .ol-attribution button {
      flex-shrink: 0;
  }

  .ol-attribution.ol-collapsed ul {
      display: none;
  }

  .ol-attribution:not(.ol-collapsed) {
      background: var(--ol-partial-background-color);
  }

  .ol-attribution.ol-uncollapsible {
      bottom: 0;
      right: 0;
      border-radius: 4px 0 0;
  }

  .ol-attribution.ol-uncollapsible img {
      margin-top: -.2em;
      max-height: 1.6em;
  }

  .ol-attribution.ol-uncollapsible button {
      display: none;
  }

  .ol-zoomslider {
      top: 4.5em;
      left: .5em;
      height: 200px;
  }

  .ol-zoomslider button {
      position: relative;
      height: 10px;
  }

  .ol-touch .ol-zoomslider {
      top: 5.5em;
  }

  .ol-overviewmap {
      left: 0.5em;
      bottom: 0.5em;
  }

  .ol-overviewmap.ol-uncollapsible {
      bottom: 0;
      left: 0;
      border-radius: 0 4px 0 0;
  }

  .ol-overviewmap .ol-overviewmap-map,
  .ol-overviewmap button {
      display: block;
  }

  .ol-overviewmap .ol-overviewmap-map {
      border: 1px solid var(--ol-subtle-foreground-color);
      height: 150px;
      width: 150px;
  }

  .ol-overviewmap:not(.ol-collapsed) button {
      bottom: 0;
      left: 0;
      position: absolute;
  }

  .ol-overviewmap.ol-collapsed .ol-overviewmap-map,
  .ol-overviewmap.ol-uncollapsible button {
      display: none;
  }

  .ol-overviewmap:not(.ol-collapsed) {
      background: var(--ol-subtle-background-color);
  }

  .ol-overviewmap-box {
      border: 1.5px dotted var(--ol-subtle-foreground-color);
  }

  .ol-overviewmap .ol-overviewmap-box:hover {
      cursor: move;
  }

  /* </> */

  .jmix-feature-modification-control {
      left: 0.5em;
      top: 4em;
  }

  /* Lumo specific styles */

  :host([focus-ring]) {
    box-shadow: 0 0 0 2px var(--lumo-primary-color-50pct);
  }

  .jmix-control-button.active {
    background-color: var(--jmix-control-active-background-color, var(--lumo-primary-color-50pct));
  }

  .jmix-control-button.active:hover {
    background-color: var(--jmix-control-active-background-color, var(--lumo-primary-color));
  }

  .jmix-control-button svg {
    padding: calc(var(--lumo-space-xs) / 3);
    width: calc(var(--lumo-icon-size-s) - var(--lumo-space-xs));
    height: calc(var(--lumo-icon-size-s) - var(--lumo-space-xs));
  }

  /*
   * Modify button
   */

   .jmix-control-button.modify svg g:not(:first-child) {
     stroke: var(--jmix-control-color, var(--ol-subtle-foreground-color));
     fill: var(--jmix-control-color, var(--ol-subtle-foreground-color));
   }

  .jmix-control-button.modify:hover svg g:not(:first-child) {
     stroke: var(--jmix-control-hover-color, var(--ol-foreground-color));
     fill: var(--jmix-control-hover-color, var(--ol-foreground-color));
  }

  .jmix-control-button.modify.active svg g:not(:first-child) {
     stroke: var(--jmix-control-active-color, var(--lumo-primary-contrast-color));
     fill: var(--jmix-control-active-color, var(--lumo-primary-contrast-color));
  }

  .jmix-control-button.modify.active:hover svg g:not(:first-child) {
     stroke: var(--jmix-control-active-hover-color, var(--lumo-primary-contrast-color));
     fill: var(--jmix-control-active-hover-color, var(--lumo-primary-contrast-color));
  }

  /*
   * Translate button
   */

  .jmix-control-button.translate svg {
    width: calc(var(--lumo-icon-size-m) - var(--lumo-space-xs));
    height: calc(var(--lumo-icon-size-m) - var(--lumo-space-xs));
  }

  .jmix-control-button.translate svg path {
    stroke: var(--jmix-control-color, var(--ol-subtle-foreground-color));
  }

  .jmix-control-button.translate:hover svg path {
     stroke: var(--jmix-control-hover-color, var(--ol-foreground-color));
  }

  .jmix-control-button.translate.active svg path {
     stroke: var(--jmix-control-active-color, var(--lumo-primary-contrast-color));
  }

  .jmix-control-button.translate.active:hover svg path {
     stroke: var(--jmix-control-active-hover-color, var(--lumo-primary-contrast-color));
  }

  /*
   * Delete button
   */

  .jmix-control-button.delete svg {
    width: calc(var(--lumo-icon-size-m) - var(--lumo-space-xs));
    height: calc(var(--lumo-icon-size-m) - var(--lumo-space-xs));
  }

  .jmix-control-button.delete svg rect {
    stroke: var(--jmix-control-color, var(--ol-subtle-foreground-color));
  }

  .jmix-control-button.delete svg path {
    stroke: var(--jmix-control-color, var(--ol-subtle-foreground-color));
    fill: var(--jmix-control-color, var(--ol-subtle-foreground-color));
  }

  .jmix-control-button.delete:hover svg rect {
    stroke: var(--jmix-control-hover-color, var(--ol-foreground-color));
  }

  .jmix-control-button.delete:hover svg path {
    stroke: var(--jmix-control-hover-color, var(--ol-foreground-color));
    fill: var(--jmix-control-hover-color, var(--ol-foreground-color));
  }

  .jmix-control-button.delete.active svg rect {
    stroke: var(--jmix-control-active-color, var(--lumo-primary-contrast-color));
  }

  .jmix-control-button.delete.active svg path {
     stroke: var(--jmix-control-active-color, var(--lumo-primary-contrast-color));
     fill: var(--jmix-control-active-color, var(--lumo-primary-contrast-color));
  }

  .jmix-control-button.delete.active:hover svg rect {
     stroke: var(--jmix-control-active-hover-color, var(--lumo-primary-contrast-color));
  }

  .jmix-control-button.delete.active:hover svg path {
     stroke: var(--jmix-control-active-hover-color, var(--lumo-primary-contrast-color));
     fill: var(--jmix-control-active-hover-color, var(--lumo-primary-contrast-color));
  }

    @media (forced-colors: active) {
        :root,
        :host {
            --ol-brand-color: CanvasText;
            --jmix-control-active-background-color: CanvasText;
            --jmix-control-active-color: Canvas;
            --jmix-control-active-hover-color: Canvas;
        }
    }
}


/* jmix-lumo/src/addons/notifications/index.css */
/* jmix-lumo/src/addons/notifications/jmix-notifications-indicator.css */
:root::before,
:host::before {
    --_lumo-jmix-notifications-indicator-inject: 1;
    --_lumo-jmix-notifications-indicator-inject-modules: lumo_components_jmix-notifications-indicator;
}

@media lumo_components_jmix-notifications-indicator {
    /* < Copied from src/vaadin-button.js >*/
    :host {
        display: inline-block;
        position: relative;
        outline: none;
        white-space: nowrap;
        -webkit-user-select: none;
        -moz-user-select: none;
        user-select: none;
    }

    :host([hidden]) {
        display: none !important;
    }

    .jmix-ntf-indicator-container {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        text-align: center;
        width: 100%;
        height: 100%;
        min-height: inherit;
        text-shadow: inherit;
        position: relative;
    }

    /* </ Copied from src/vaadin-button.js >*/
    [part="icon"] {
        display: flex;
    }

    [part='counter'] {
        position: absolute;
        display: flex;
        border-radius: 50%;
    }

    :host(:not([loading])) [part="counter"] ::slotted(*) {
        display: none !important;
    }

    /* Loading attribute */
    :host([loading]) [part="counter"] ::slotted(*) {
        display: block;
        animation: notification-rotation-counterclockwise 2s infinite linear;
    }

    :host([loading]) [part="counter"] span {
        display: none;
    }

    @keyframes notification-rotation-counterclockwise {
        from {
            transform: rotate(0deg);
        }
        to {
            transform: rotate(-360deg);
        }
    }

    /* Lumo styles */
    :host {
        /* Sizing */
        --lumo-button-size: var(--lumo-size-m);
        height: var(--lumo-button-size);
        margin: var(--lumo-space-xs) 0;
        box-sizing: border-box;
        /* Style */
        font-family: var(--lumo-font-family);
        font-size: var(--lumo-font-size-m);
        font-weight: 500;
        color: var(--_lumo-button-color, var(--lumo-primary-text-color));
        border-radius: var(--lumo-border-radius-m);
        cursor: var(--lumo-clickable-cursor);
        -webkit-tap-highlight-color: transparent;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        flex-shrink: 0;
    }

    /* For interaction states */
    :host::before,
    :host::after {
        content: '';
        /* We rely on the host always being relative */
        position: absolute;
        z-index: 1;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        background-color: currentColor;
        border-radius: inherit;
        opacity: 0;
        pointer-events: none;
    }

    /* Hover */
    @media (any-hover: hover) {
        :host(:hover)::before {
            opacity: 0.02;
        }
    }

    /* Active */
    :host::after {
        transition: opacity 1.4s, transform 0.1s;
        filter: blur(8px);
    }

    :host([active])::before {
        opacity: 0.05;
        transition-duration: 0s;
    }

    :host([active])::after {
        opacity: 0.1;
        transition-duration: 0s, 0s;
        transform: scale(0);
    }

    /* Keyboard focus */
    :host([focus-ring]) {
        box-shadow: 0 0 0 2px var(--lumo-primary-color-50pct);
    }

    :host([disabled]) {
        pointer-events: none;
        color: var(--lumo-disabled-text-color);
    }

    /* Icons */
    [part] ::slotted(vaadin-icon) {
        width: var(--lumo-icon-size-m);
        height: var(--lumo-icon-size-m);
        padding: 0;
    }

    [part] ::slotted(vaadin-icon) {
        align-self: center;
        box-sizing: border-box !important;
    }

    /* --- Jmix own styles --- */
    :host {
        padding-left: calc((var(--lumo-button-size) - var(--lumo-icon-size-m)) / 2);
        padding-right: calc((var(--lumo-button-size) - var(--lumo-icon-size-m)) / 2);
    }

    [part='counter'] {
        margin-left: var(--lumo-icon-size-m);
        margin-bottom: var(--lumo-icon-size-s);
        width: var(--lumo-icon-size-s);
        height: var(--lumo-icon-size-s);
        justify-content: center;
        padding: calc(var(--lumo-space-xs) - 0.03rem);
        background-color: var(--lumo-error-color);
        color: var(--lumo-error-contrast-color);
    }

    [part='counter-label'] {
        align-self: center;
        font-size: var(--lumo-font-size-xs);
    }

    /* Empty attribute */
    :host([empty]) [part='counter'] {
        background-color: hsl(0, 0%, 74%);
    }

    :host([empty][disabled]) [part='counter'] {
        background-color: hsl(0, 0%, 89%);
    }

    /* Disabled */
    :host([disabled]) [part="counter"] {
        background-color: hsl(0 85% 80% / 1);
    }

    /* Loading attribute */
    :host([loading]) [part="counter"] {
        background-color: var(--lumo-contrast-30pct);
    }

    /* RTL */
    :host([dir='rtl']) [part='counter'] {
        margin-left: 0;
        margin-right: var(--lumo-icon-size-m);
    }

    @media (forced-colors: active) {
        :host {
            --vaadin-button-border-width: 1px;
            --vaadin-button-background: ButtonFace;
            --vaadin-button-text-color: ButtonText;
        }

        [part='counter'] {
            border: var(--vaadin-button-border-width, 1px) solid;
        }

        ::slotted(*) {
            forced-color-adjust: auto;
        }

        :host([disabled]) {
            --vaadin-button-background: transparent !important;
            --vaadin-button-border-color: GrayText !important;
            --vaadin-button-text-color: GrayText !important;
            opacity: 1;
        }
    }
}

/* jmix-lumo/src/addons/notifications/received-in-app-notifications-dialog.css */
.received-in-app-notifications-dialog .pagination {
    align-self: center;
}

.received-in-app-notifications-dialog .notification-datagrid-icon-xs {
    height: calc(var(--lumo-icon-size-s) / 1.5);
    width: calc(var(--lumo-icon-size-s) / 1.5);
}

/* jmix-lumo/src/addons/notifications/misc.css */
.ntf-notification-body-field {
    padding-top: 0;
}

vaadin-combo-box.ntf-notification-recipients-field::part(toggle-button),
vaadin-multi-select-combo-box.ntf-notification-recipients-field::part(toggle-button) {
    display: none;
}

.ntf-notification-type-renderer {
    display: flex;
    gap: var(--lumo-space-s);
}

.ntf-notification-type-renderer-icon {
    height: var(--lumo-icon-size-s);
    width: var(--lumo-icon-size-s);
}

.ntf-notification-type-renderer-text {
    font-size: var(--lumo-font-size-m);
}

/* jmix-lumo/src/addons/tabbedmode/index.css */
/* jmix-lumo/src/addons/tabbedmode/jmix-breadcrumb.css */
:root::before,
:host::before {
    --_lumo-jmix-breadcrumb-inject: 1;
    --_lumo-jmix-breadcrumb-inject-modules: lumo_components_jmix-breadcrumb;
}

@media lumo_components_jmix-breadcrumb {
    :host {
        display: inline-block;
        box-sizing: border-box;
        outline: none;
        white-space: nowrap;
        user-select: none;

        font-family: var(--lumo-font-family);
        border-radius: var(--lumo-border-radius-m);

        --_focus-ring-color: var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
        --_focus-ring-width: var(--vaadin-focus-ring-width, 2px);
    }

    :host([hidden]) {
        display: none !important;
    }

    :host(:last-of-type) {
        pointer-events: none;
    }

    [part='text'] {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex-shrink: 0;
        text-align: center;
        width: 100%;
        height: 100%;
        min-height: inherit;
        text-shadow: inherit;

        gap: var(--lumo-space-s);
    }

    [part='text'] ::slotted([slot='text']) {
        color: var(--lumo-primary-text-color);
        font-weight: 500;
        border-radius: var(--lumo-border-radius-m);
        cursor: var(--lumo-clickable-cursor);
    }

    :host(:last-of-type) [part='text'] ::slotted([slot='text']) {
        color: inherit;
        font-weight: inherit;
    }

    [part='separator']::after {
        content: '>';
        speak: none;
    }

    :host(:last-of-type) [part='separator'] {
        display: none;
    }

    /* Keyboard focus */

    :host([focus-ring]) [part='text'] ::slotted([slot='text']) {
        box-shadow: 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
    }

    /* Disabled state */

    :host([disabled]) {
        pointer-events: none;
        color: var(--lumo-disabled-text-color);
    }

    :host([disabled]) [part='text'] ::slotted([slot='text']) {
        color: var(--lumo-disabled-text-color);
    }

    /* forced-colors */

    @media (forced-colors: active) {
        :host {
            outline: 1px solid;
            outline-offset: -1px;
        }

        :host([focused]) {
            outline-width: 2px;
        }

        :host([disabled]) {
            outline-color: GrayText;
        }
    }
}

/* jmix-lumo/src/addons/tabbedmode/jmix-breadcrumbs.css */
jmix-breadcrumbs {
    gap: var(--lumo-space-s);
}

/* jmix-lumo/src/addons/tabbedmode/jmix-main-tabsheet.css */
:root,
:host {
    --_lumo-jmix-main-tabsheet-inject: 1;
    --_lumo-jmix-main-tabsheet-inject-modules:
            lumo_mixins_loader,
            lumo_components_jmix-main-tabsheet;

    --_lumo-vaadin-tabsheet-scroller-inject: 1;
    --_lumo-vaadin-tabsheet-scroller-inject-modules: lumo_components_scroller;
}

/* CAUTION: copied from @vaadin/vaadin-lumo-styles/src/components/tabsheet.css [last update Vaadin 25.1.0] */
@media lumo_components_jmix-main-tabsheet {
    :host {
        display: flex;
        flex-direction: column;
        font-size: var(--lumo-font-size-m);
        line-height: var(--lumo-line-height-m);
        font-family: var(--lumo-font-family);

        box-sizing: border-box;
    }

    :host([hidden]) {
        display: none !important;
    }

    [part='tabs-container'] {
        position: relative;
        display: flex;
        align-items: center;
        box-shadow: inset 0 -1px 0 0 var(--lumo-contrast-10pct);
        padding: var(--lumo-space-xs) var(--lumo-space-s);
        gap: var(--lumo-space-s);
    }

    ::slotted([slot='tabs']) {
        flex: 1;
        align-self: stretch;
        min-width: 8em;
        box-shadow: initial;
        margin: calc(var(--lumo-space-xs) * -1) calc(var(--lumo-space-s) * -1);
    }

    ::slotted([hidden]) {
        display: none !important;
    }

    [part='content'] {
        position: relative;
        flex: 1;
        box-sizing: border-box;
        border-bottom-left-radius: inherit;
        border-bottom-right-radius: inherit;

        /* Jmix specifics */
        padding: 0;
    }

    :host([theme~='bordered']) {
        border: 1px solid var(--lumo-contrast-20pct);
        border-radius: var(--lumo-border-radius-l);
    }

    :host([loading]) [part='content'] {
        display: flex;
        align-items: center;
        justify-content: center;
    }

    /* Jmix specifics:
    - padding: 0 by default
    - no need in 'no-padding' theme variant
    */
}

/* jmix-lumo/src/addons/tabbedmode/jmix-view-container.css */
:root::before,
:host::before {
    --_lumo-jmix-view-container-inject: 1;
    --_lumo-jmix-view-container-inject-modules: lumo_components_jmix-view-container;
}

@media lumo_components_jmix-view-container {
    [part='breadcrumbs'] ::slotted(*:not([hidded])) {
        padding: var(--lumo-space-m) var(--lumo-space-m) 0;
    }
}

/* jmix-lumo/src/addons/tabbedmode/jmix-view-tab.css */
:root,
:host {
    --_lumo-jmix-view-tab-inject: 1;
    --_lumo-jmix-view-tab-inject-modules: lumo_components_jmix-view-tab;
}

/* CAUTION: copied from @vaadin/vaadin-lumo-styles/src/components/tab.css [last update Vaadin 25.1.0] */
@media lumo_components_jmix-view-tab {
    :host {
        box-sizing: border-box;
        padding: 0.5rem 0.75rem;
        font-family: var(--lumo-font-family);
        font-size: var(--lumo-font-size-m);
        line-height: var(--lumo-line-height-xs);
        font-weight: 500;
        opacity: 1;
        color: var(--lumo-secondary-text-color);
        transition:
                0.15s color,
                0.2s transform;
        flex-shrink: 0;
        display: flex;
        align-items: center;
        position: relative;
        cursor: var(--lumo-clickable-cursor);
        transform-origin: 50% 100%;
        outline: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        overflow: hidden;
        min-width: var(--lumo-size-m);
        -webkit-user-select: none;
        user-select: none;
        --_focus-ring-color: var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
        --_focus-ring-width: var(--vaadin-focus-ring-width, 2px);
        --_selection-color: var(--vaadin-selection-color, var(--lumo-primary-color));
        --_selection-color-text: var(--vaadin-selection-color-text, var(--lumo-primary-text-color));

        /* Jmix specific styles */
        gap: var(--lumo-space-s);
    }

    :host([hidden]) {
        display: none !important;
    }

    :host(:not([orientation='vertical'])) {
        text-align: center;
    }

    :host(:hover),
    :host([focus-ring]) {
        color: var(--lumo-body-text-color);
    }

    :host([selected]) {
        color: var(--_selection-color-text);
        transition: 0.6s color;
    }

    :host([active]:not([selected])) {
        color: var(--_selection-color-text);
        transition-duration: 0.1s;
    }

    :host::before,
    :host::after {
        content: '';
        position: absolute;
        display: var(--_lumo-tab-marker-display, block);
        bottom: 0;
        left: 50%;
        width: 100%; /* Jmix specific styles */
        height: 2px;
        background-color: var(--lumo-contrast-60pct);
        border-radius: var(--lumo-border-radius-s) var(--lumo-border-radius-s) 0 0;
        transform: translateX(-50%) scale(0);
        transform-origin: 50% 100%;
        transition: 0.14s transform cubic-bezier(0.12, 0.32, 0.54, 1);
        will-change: transform;
    }

    :host::after {
        box-shadow: 0 0 0 4px var(--_selection-color);
        opacity: 0.15;
        transition:
                0.15s 0.02s transform,
                0.8s 0.17s opacity;
    }

    :host([selected])::before,
    :host([selected])::after {
        background-color: var(--_selection-color);
        transform: translateX(-50%) scale(1);
        transition-timing-function: cubic-bezier(0.12, 0.32, 0.54, 1.5);
    }

    :host([selected]:not([active]))::after {
        opacity: 0;
    }

    :host(:not([orientation='vertical'])) ::slotted(a[href]) {
        justify-content: center;
    }

    :host ::slotted(a) {
        display: flex;
        width: 100%;
        align-items: center;
        height: 100%;
        margin: -0.5rem -0.75rem;
        padding: 0.5rem 0.75rem;
        outline: none;

        /*
        Override the CSS inherited from `lumo-color` and `lumo-typography`.
        Note: `!important` is needed because of the `:slotted` specificity.
      */
        text-decoration: none !important;
        color: inherit !important;
    }

    :host ::slotted(vaadin-icon) {
        margin: 0 4px;
        width: var(--lumo-icon-size-m);
        height: var(--lumo-icon-size-m);
    }

    /* Vaadin icons are based on a 16x16 grid (unlike Lumo and Material icons with 24x24), so they look too big by default */
    :host ::slotted(vaadin-icon[icon^='vaadin:']) {
        padding: 0.25rem;
        box-sizing: border-box !important;
    }

    :host(:not([dir='rtl'])) ::slotted(vaadin-icon:first-child) {
        margin-left: 0;
    }

    :host(:not([dir='rtl'])) ::slotted(vaadin-icon:last-child) {
        margin-right: 0;
    }

    :host([theme~='icon-on-top']) {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: space-around;
        text-align: center;
        padding-bottom: 0.5rem;
        padding-top: 0.25rem;
    }

    :host([theme~='icon-on-top']) ::slotted(a) {
        flex-direction: column;
        align-items: center;
        margin-top: -0.25rem;
        padding-top: 0.25rem;
    }

    :host([theme~='icon-on-top']) ::slotted(vaadin-icon) {
        margin: 0;
    }

    /* Disabled */

    :host([disabled]) {
        pointer-events: none;
        opacity: 1;
        color: var(--lumo-disabled-text-color);
    }

    /* Focus-ring */

    :host([focus-ring]) {
        box-shadow: inset 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
        border-radius: var(--lumo-border-radius-m);
    }

    /* RTL specific styles */

    :host([dir='rtl'])::before,
    :host([dir='rtl'])::after {
        left: auto;
        right: 50%;
        transform: translateX(50%) scale(0);
    }

    :host([dir='rtl'][selected]:not([orientation='vertical']))::before,
    :host([dir='rtl'][selected]:not([orientation='vertical']))::after {
        transform: translateX(50%) scale(1);
    }

    :host([dir='rtl']) ::slotted(vaadin-icon:first-child) {
        margin-right: 0;
    }

    :host([dir='rtl']) ::slotted(vaadin-icon:last-child) {
        margin-left: 0;
    }

    @media (forced-colors: active) {
        :host([focused]) {
            outline: 1px solid;
            outline-offset: -1px;
        }

        :host([selected]) {
            border-bottom: 2px solid;
        }
    }
}

.jmix-view-tab-text {
    max-width: var(--jmix-tabmod-main-tab-text-max-width, 16rem);
    text-overflow: ellipsis;
    overflow: hidden;
    white-space: nowrap;
}

.jmix-view-tab-close-button {
    margin: 0;
    padding: 0;

    height: auto;
    min-width: 0;

    color: inherit;
    font-size: 0.75em;
    line-height: inherit;

    background: transparent;
}

.jmix-view-tab-close-button::part(prefix) {
    margin: 0;
}

vaadin-tabs[theme~='small'] > jmix-view-tab {
    font-size: var(--lumo-font-size-s);
}

vaadin-tabs[theme~='centered'][orientation='horizontal'] > jmix-view-tab:first-of-type {
    margin-inline-start: auto;
}

vaadin-tabs[theme~='centered'][orientation='horizontal'] > jmix-view-tab:last-of-type {
    margin-inline-end: auto;
}

vaadin-tabs > jmix-view-tab {
    margin-left: 0;
}

vaadin-tabs[dir='rtl'] > jmix-view-tab {
    margin-right: 0;
}

/* Drag & Drop specific styles */

jmix-view-tab {
    --_dragover-indicator-color: var(--jmix-view-tab-dragover-indicator-color, var(--lumo-primary-color-50pct));
    --_dragover-indicator-width: var(--jmix-view-tab-dragover-indicator-width, 2px);
}

jmix-view-tab.v-dragged {
    background: linear-gradient(var(--lumo-contrast-5pct), var(--lumo-contrast-5pct)) var(--lumo-base-color);
}

jmix-view-tab.v-dragged::before,
jmix-view-tab.v-dragged::after {
    display: none;
}

jmix-view-tab[dragover='before'] {
    border-inline-start: var(--_dragover-indicator-width) solid var(--_dragover-indicator-color);
}

jmix-view-tab[dragover='after'] {
    border-inline-end: var(--_dragover-indicator-width) solid var(--_dragover-indicator-color);
}

/* jmix-lumo/src/addons/tabbedmode/misc.css */
.tabmod-too-many-open-tabs-notification {
    white-space: pre;
}

/* jmix-lumo/src/addons/uiconstraints/index.css */
/* jmix-lumo/src/addons/uiconstraints/ui-component-resource-policy-model-create-view.css */
.ui-component-resource-policy-model-create-view .component-ids-editor-layout {
    border: 1px var(--lumo-utility-border-style, solid) var(--lumo-contrast-20pct);
    border-radius: var(--lumo-border-radius-m);
    flex-shrink: 0;
}

.ui-component-resource-policy-model-create-view .selected-component-ids-layout {
    gap: var(--lumo-space-xs);
}

.ui-component-resource-policy-model-create-view .component-id-combo-box-renderer-tag {
    color: var(--lumo-secondary-text-color);
}

/* jmix-lumo/src/addons/uirecovery/index.css */
/* jmix-lumo/src/addons/uirecovery/draft-list-view.css */
.uirec-draft-list-hint,
.uirec-draft-list-empty {
    color: var(--lumo-secondary-text-color);
    font-size: var(--lumo-font-size-s);
}

.uirec-draft-list-buttons {
    gap: var(--lumo-space-s);
}

.uirec-draft-grid::part(items) {
    grid-gap: var(--lumo-space-s);
}

.uirec-draft-card {
    background: var(--lumo-base-color);
    border: 1px solid var(--lumo-contrast-10pct);
    border-radius: var(--lumo-border-radius-l);
    box-sizing: border-box;
    gap: 0;
    margin: 0;
    /* The body link carries the padding, so it covers the whole card except the discard button. */
    padding: 0 var(--lumo-space-s) 0 0;
}

.uirec-draft-card-body {
    align-self: stretch;
    color: inherit;
    display: flex;
    flex-direction: column;
    gap: var(--lumo-space-xs);
    min-width: 0;
    padding: var(--lumo-space-s);
    text-decoration: none;
}

/* Lumo re-underlines links on hover, so the reset has to be restated for that state. */
.uirec-draft-card-body:hover {
    text-decoration: none;
}

/* The body link takes the keyboard focus, but the ring is drawn around the whole card. */
.uirec-draft-card:has(.uirec-draft-card-body:focus-visible) {
    box-shadow: 0 0 0 var(--vaadin-focus-ring-width, 2px)
        var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
}

.uirec-draft-card-body:focus-visible {
    outline: none;
}

.uirec-draft-card:has(.uirec-draft-card-body:hover) {
    border-color: var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
}

.uirec-draft-card-title {
    font-size: var(--lumo-font-size-m);
    font-weight: 600;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.uirec-draft-card-record {
    color: var(--lumo-body-text-color);
    font-size: var(--lumo-font-size-s);
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.uirec-draft-card-date {
    color: var(--lumo-secondary-text-color);
    font-size: var(--lumo-font-size-xs);
}

.uirec-draft-card-discard {
    flex: none;
}

/* Forced colors remove box-shadow, so the focus ring is drawn as an outline there. They also replace the
   hover border colour with the palette colour; a system colour is kept, so Highlight marks the hover,
   with an extra outline to make it visible next to the black or white border. */
@media (forced-colors: active) {
    .uirec-draft-card:has(.uirec-draft-card-body:focus-visible) {
        outline: var(--vaadin-focus-ring-width, 2px) solid;
        outline-offset: 1px;
    }

    .uirec-draft-card:has(.uirec-draft-card-body:hover) {
        border-color: Highlight;
    }

    /* Together with the border it gives a 2px line. Not applied to a focused card, to keep its focus ring. */
    .uirec-draft-card:has(.uirec-draft-card-body:hover:not(:focus-visible)) {
        outline: 1px solid Highlight;
    }
}


/* jmix-lumo/src/addons/stormbpmn/index.css */
/* jmix-lumo/src/addons/stormbpmn/stormbpmn-diagram-list-view.css */
.stormbpmn-diagram-list-view vaadin-grid.diagrams-data-grid::part(empty-state) {
    align-items: center;
    display: flex;
    justify-content: center;
}

.stormbpmn-diagram-list-view .page-button {
    font-size: var(--lumo-font-size-s);
    --lumo-button-size: var(--lumo-size-xs);

    padding: 0;
    margin: 0;
}
